Sanskrit scripture search: Mahabharata, Upanishads, Gita; cited verses, honest no-answer.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Walk a work's structure in order: a work gives its sections, a section its chapters, a chapter its verses (label and translation, in pages). Use it when the user wants to read a chapter or a book through, asks what comes after a verse, or what a book contains; search_texts cannot do that. Three steps, each named in the reply of the one before: `work` alone lists the sections; add `section` for its chapters; add `chapter` (the `index` from the listing) for its verses. Every reply carries `next`, the arguments of the call that continues. To quote a verse, call get_verse with its `unit_id`: it returns the citation and version hash.
A work slug, as list_works gives it.
Which page of a section's chapters. Default 1.
Verses per page. Default 20, at most 50.
Where in the chapter to start, counting verses from 0. Default 0.
The chapter's `index` in the section's listing; it opens that chapter's verses.
A section slug from the work's listing (a parva, a canto, an upaniṣad).
Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en.
Chapters per page. Default 50, at most 100.
Walk a work's structure in order: a work gives its sections, a section its chapters, a chapter its verses (label and translation, in pages). Use it when the user wants to read a chapter or a book through, asks what comes after a verse, or what a book contains; search_texts cannot do that. Three steps, each named in the reply of the one before: `work` alone lists the sections; add `section` for its chapters; add `chapter` (the `index` from the listing) for its verses. Every reply carries `next`, the arguments of the call that continues. To quote a verse, call get_verse with its `unit_id`: it returns the citation and version hash.
| Argument | Type | Description |
|---|---|---|
| page | integer | Which page of a section's chapters. Default 1. |
| work* | string | A work slug, as list_works gives it. |
| limit | integer | Verses per page. Default 20, at most 50. |
| offset | integer | Where in the chapter to start, counting verses from 0. Default 0. |
| chapter | integer | The chapter's `index` in the section's listing; it opens that chapter's verses. |
| section | string | A section slug from the work's listing (a parva, a canto, an upaniṣad). |
| language | string | Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en. |
| page_size | integer | Chapters per page. Default 50, at most 100. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"work"
],
"properties": {
"page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Which page of a section's chapters. Default 1."
},
"work": {
"type": "string",
"minLength": 1,
"description": "A work slug, as list_works gives it."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Verses per page. Default 20, at most 50."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Where in the chapter to start, counting verses from 0. Default 0."
},
"chapter": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "The chapter's `index` in the section's listing; it opens that chapter's verses."
},
"section": {
"type": "string",
"minLength": 1,
"description": "A section slug from the work's listing (a parva, a canto, an upaniṣad)."
},
"language": {
"enum": [
"ru",
"en",
"es",
"hi",
"zh"
],
"type": "string",
"description": "Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en."
},
"page_size": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Chapters per page. Default 50, at most 100."
}
}
}Given a verse, find other passages in the library that say something close to it — by meaning, not by shared words. Start here when you already have a verse; when you only have words, a question or a term, use search_texts. Use it to check whether a teaching appears elsewhere before presenting it as the tradition's position, to gather parallel places, or to see how different works treat one subject. Set `exclude_same_work` when you want an independent witness: the next verse of the same chapter is nearly always similar and proves nothing. An empty result is a real answer — it means the library says this in one place only.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Passages to return. Default 8. |
| verse* | string | A citation ("BG 2.47") or a `unit_id` from an earlier result. |
| language | string | Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en. |
| exclude_same_work | boolean | Skip passages from the same work, so what comes back corroborates rather than repeats. Default false. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"verse"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Passages to return. Default 8."
},
"verse": {
"type": "string",
"minLength": 1,
"description": "A citation (\"BG 2.47\") or a `unit_id` from an earlier result."
},
"language": {
"enum": [
"ru",
"en",
"es",
"hi",
"zh"
],
"type": "string",
"description": "Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en."
},
"exclude_same_work": {
"type": "boolean",
"description": "Skip passages from the same work, so what comes back corroborates rather than repeats. Default false."
}
}
}Ekadashi fasts, festivals and the appearance and disappearance days of the acharyas in the Gaudiya Vaishnava calendar, computed for one place. Call it for any question about when an Ekadashi or a festival falls, or when to break a fast. The place is required and matters: the fast day is decided by the tithi at local sunrise, and the time to break the fast is minutes wide and different in every city. Ask the user where they are rather than guessing. Every observance links to a page with its story and the verses behind it.
| Argument | Type | Description |
|---|---|---|
| days | integer | How many days ahead, from today at the place. Default 30. |
| language | string | Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en. |
| latitude* | number | Latitude of the place, degrees. |
| timezone* | string | IANA timezone, e.g. "Europe/Moscow". |
| longitude* | number | Longitude of the place, degrees. |
| place_name | string | The place's name, echoed back. |
Fetch one verse whole: the Sanskrit in Devanāgarī and IAST, the word-by-word breakdown with the meaning each word carries in this passage, the literary translation, the commentary, and optionally the surrounding verses. Call it after search_texts when you are going to quote, and whenever the user names a verse. The word-by-word table is what lets you explain or re-translate a line honestly instead of trusting a finished translation. Accepts citations as people write them, not only internal ids. To read a chapter or a whole book in order, use browse_work. To read on around one verse, call this again with `context` 5 and then with the `unit_id` of the last neighbour marked "after"; each reply carries the five verses on either side with their translations.
| Argument | Type | Description |
|---|---|---|
| verse* | string | A citation — "BG 2.47", "Бхагавад-гита 2.47", "Mahabharata 1.1.1", "Upanishads Mundaka 2.2.8" — or a `unit_id` from an earlier result. |
| context | integer | Verses to include either side, within the same chapter. Use 1–2 when the argument depends on what surrounds the verse. Default 0. |
| language | string | Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"verse"
],
"properties": {
"verse": {
"type": "string",
"minLength": 1,
"description": "A citation — \"BG 2.47\", \"Бхагавад-гита 2.47\", \"Mahabharata 1.1.1\", \"Upanishads Mundaka 2.2.8\" — or a `unit_id` from an earlier result."
},
"context": {
"type": "integer",
"maximum": 5,
"minimum": 0,
"description": "Verses to include either side, within the same chapter. Use 1–2 when the argument depends on what surrounds the verse. Default 0."
},
"language": {
"enum": [
"ru",
"en",
"es",
"hi",
"zh"
],
"type": "string",
"description": "Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en."
}
}
}List the authors the tradition names, grouped by period, each with a short note and the books credited to them. Call it when the user asks who wrote something, or wants the works of one acharya; pass the author's `id` to list_works to see the books. Filter by `era`: shruti, classical, caitanya, successors, modern.
| Argument | Type | Description |
|---|---|---|
| era | string | Only the authors of this period. |
| language | string | Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"era": {
"enum": [
"shruti",
"classical",
"caitanya",
"successors",
"modern"
],
"type": "string",
"description": "Only the authors of this period."
},
"language": {
"enum": [
"ru",
"en",
"es",
"hi",
"zh"
],
"type": "string",
"description": "Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en."
}
}
}List the works with their sizes, shelf, author and available languages. Call it at the start of a conversation about scripture, or when you need work slugs for filtering. The list is short by default: no descriptions. Narrow it with `category` (a shelf: itihasa, purana, upanishad, vedanta, samhita, shastra, kavya, shruti, smriti; `shruti` is the upanishad shelf, `smriti` the itihasa and purana shelves) or with `author` (an id from list_authors). Set `include_descriptions` for a paragraph on each work. It also tells you what is not translated: several works exist only in Russian. Check `languages` before promising the user an English text.
| Argument | Type | Description |
|---|---|---|
| author | string | Only the works credited to this author id (see list_authors). |
| category | string | Only the works on this shelf. |
| language | string | Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en. |
| include_descriptions | boolean | Add a paragraph describing each work. Default false. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"author": {
"type": "string",
"minLength": 1,
"description": "Only the works credited to this author id (see list_authors)."
},
"category": {
"enum": [
"itihasa",
"purana",
"upanishad",
"vedanta",
"samhita",
"shastra",
"kavya",
"shruti",
"smriti"
],
"type": "string",
"description": "Only the works on this shelf."
},
"language": {
"enum": [
"ru",
"en",
"es",
"hi",
"zh"
],
"type": "string",
"description": "Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en."
},
"include_descriptions": {
"type": "boolean",
"description": "Add a paragraph describing each work. Default false."
}
}
}Look up a Sanskrit word: its spellings across scripts, the meanings it carries in this corpus, how many verses gloss it, and examples of where it occurs. Built from the word-by-word breakdowns of some 30 000 verses, so these are the meanings translators actually assigned to the word in these texts — not a lexicon's list of everything it could mean. Use it before translating a term yourself, and whenever the user asks what a word means.
| Argument | Type | Description |
|---|---|---|
| term* | string | In IAST (śeṣa, diacritics optional) or Devanāgarī (शेष). A word written in another script is not in this dictionary — the headwords are Sanskrit — but search_texts will still find it in the prose. |
| examples | integer | Verses to cite as examples. Default 5. |
| language | string | Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"term"
],
"properties": {
"term": {
"type": "string",
"minLength": 1,
"description": "In IAST (śeṣa, diacritics optional) or Devanāgarī (शेष). A word written in another script is not in this dictionary — the headwords are Sanskrit — but search_texts will still find it in the prose."
},
"examples": {
"type": "integer",
"maximum": 20,
"minimum": 0,
"description": "Verses to cite as examples. Default 5."
},
"language": {
"enum": [
"ru",
"en",
"es",
"hi",
"zh"
],
"type": "string",
"description": "Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en."
}
}
}Search the Vedaword library of Sanskrit scripture by meaning as well as by wording, so a paraphrased question works and a Sanskrit term reaches passages written in another script. This is the first thing to call for any factual question about what the scriptures say. Start here when you have words: a question, a phrase, a term. When you already have a verse and want its parallels, use find_similar_verses instead; to read a known verse whole, use get_verse; to read a chapter or a book in order, use browse_work. Returns passages with an exact citation, a URL and the version hash of the text quoted. Read `confidence` before using the results. "none" means the library has no answer and the result list is empty — report that to the user instead of reaching for something related. "low" means the passages are leads, not answers. `matched_by` says how each was found: a passage found only by "vector" shares no words with the query.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Passages to return. Default 8. |
| parts | array | Which part of a verse to search: `verse` is the Sanskrit source text, `translation` the literary translation, `word_by_word` the gloss table, `commentary` Vedaword's own exposition, `bhashya` an ācārya's original commentary. Omit to search all. |
| query* | string | A question, a phrase, a Sanskrit term, or a citation such as "BG 2.47". Any language, and Sanskrit in Devanāgarī or IAST. Quote the string to require the exact wording. |
| works | array | Restrict to these works by slug — see list_works. Omit to search all. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"latitude",
"longitude",
"timezone"
],
"properties": {
"days": {
"type": "integer",
"maximum": 240,
"minimum": 1,
"description": "How many days ahead, from today at the place. Default 30."
},
"language": {
"enum": [
"ru",
"en",
"es",
"hi",
"zh"
],
"type": "string",
"description": "Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en."
},
"latitude": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude of the place, degrees."
},
"timezone": {
"type": "string",
"description": "IANA timezone, e.g. \"Europe/Moscow\"."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude of the place, degrees."
},
"place_name": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "The place's name, echoed back."
}
}
}| language |
| string |
| Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en. |
| full_text | boolean | Return each passage whole instead of an excerpt. Use when you intend to quote; excerpts are for deciding what to quote. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Passages to return. Default 8."
},
"parts": {
"type": "array",
"items": {
"enum": [
"verse",
"translation",
"word_by_word",
"commentary",
"bhashya"
],
"type": "string"
},
"description": "Which part of a verse to search: `verse` is the Sanskrit source text, `translation` the literary translation, `word_by_word` the gloss table, `commentary` Vedaword's own exposition, `bhashya` an ācārya's original commentary. Omit to search all."
},
"query": {
"type": "string",
"minLength": 1,
"description": "A question, a phrase, a Sanskrit term, or a citation such as \"BG 2.47\". Any language, and Sanskrit in Devanāgarī or IAST. Quote the string to require the exact wording."
},
"works": {
"type": "array",
"items": {
"type": "string"
},
"description": "Restrict to these works by slug — see list_works. Omit to search all."
},
"language": {
"enum": [
"ru",
"en",
"es",
"hi",
"zh"
],
"type": "string",
"description": "Preferred language of the translations returned. Not a filter: works that exist only in Russian are returned in Russian, and each result says which language it is actually in. Default: en."
},
"full_text": {
"type": "boolean",
"description": "Return each passage whole instead of an excerpt. Use when you intend to quote; excerpts are for deciding what to quote."
}
}
}