Search and read the Pāli Canon: Pāli root texts with Russian and English translations.
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.
One segment of the canon in the Pali root and every available translation side by side. Use a segment id from search/get_text, e.g. "mn129:21.3". Sujato (en_sujato) is excluded unless named in translators.
Segment id as returned by search, e.g. mn129:21.3 or dn22:1.1.
Limit to these languages, e.g. ["ru","en"]. Default: all.
Explicit translator keys, e.g. ["en_sujato"] to include Sujato.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
One segment of the canon in the Pali root and every available translation side by side. Use a segment id from search/get_text, e.g. "mn129:21.3". Sujato (en_sujato) is excluded unless named in translators.
| Argument | Type | Description |
|---|---|---|
| langs | array | Limit to these languages, e.g. ["ru","en"]. Default: all. |
| segmentId* | string | Segment id as returned by search, e.g. mn129:21.3 or dn22:1.1. |
| translators | array | Explicit translator keys, e.g. ["en_sujato"] to include Sujato. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"segmentId"
],
"properties": {
"langs": {
"type": "array",
"items": {
"type": "string"
},
"description": "Limit to these languages, e.g. [\"ru\",\"en\"]. Default: all."
},
"segmentId": {
"type": "string",
"description": "Segment id as returned by search, e.g. mn129:21.3 or dn22:1.1."
},
"translators": {
"type": "array",
"items": {
"type": "string"
},
"description": "Explicit translator keys, e.g. [\"en_sujato\"] to include Sujato."
}
}
}Fetch a sutta by id (e.g. "dn22", "mn1", "sn56.11") — the Pali root text of every segment. Pali only by default; pass langs for translations, translators to name a translator (e.g. ["en_sujato"]). Same data as dhamma.gift/api/text.
| Argument | Type | Description |
|---|---|---|
| langs | array | Translation languages to include, e.g. ["ru","en"]. Default: none (Pali only). |
| suttaId* | string | SuttaCentral-style id, e.g. dn22, mn1, sn56.11. |
| translators | array | Explicit translator keys, e.g. ["en_sujato"] to include Sujato. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"suttaId"
],
"properties": {
"langs": {
"type": "array",
"items": {
"type": "string"
},
"description": "Translation languages to include, e.g. [\"ru\",\"en\"]. Default: none (Pali only)."
},
"suttaId": {
"type": "string",
"description": "SuttaCentral-style id, e.g. dn22, mn1, sn56.11."
},
"translators": {
"type": "array",
"items": {
"type": "string"
},
"description": "Explicit translator keys, e.g. [\"en_sujato\"] to include Sujato."
}
}
}What texts exist. Without arguments: collections (sutta/vinaya/abhidhamma/khuddaka), books by id prefix with sutta counts, and translation languages with translators. With prefix (e.g. "mn", "sn56", "an4"): the suttas under it with titles.
| Argument | Type | Description |
|---|---|---|
| prefix | string | Sutta id prefix such as mn, sn56, an4, dhp. Max 200 suttas are listed. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"prefix": {
"type": "string",
"description": "Sutta id prefix such as mn, sn56, an4, dhp. Max 200 suttas are listed."
}
}
}Search the Pali Canon on dhamma.gift by keyword/substring or REGEX (min 3 letters, no semantic search). Patterns like "kata.*dukkha", "vucc.*dukkha", "katha.*dukkha" find the canon's own definitions and expositions of a term. Returns a CENSUS of every matching sutta — id, title, match count, metaphor count, reader link — Pali only, ordered so that suttas that DEFINE the term come first, then ones NAMED after it, then by how often it occurs. Set include_segments for the matched Pali lines, include_translations (+ langs) for translations. 40 suttas by default (25 by occurrence count, plus 15 for suttas named after the term and ones defining it); metadata.totalFiles reports the true count, and limit takes a number or "all".
| Argument | Type | Description |
|---|---|---|
| exact | boolean | Whole-word match only. Default: false. |
| langs | array | Translation languages to include with include_translations, e.g. ["ru","en"]. Default: none (Pali only). |
| limit | any | How many suttas to list: a number, or "all" for every match. Default: 40, composed of 25 by occurrence count plus 15 for suttas named after the term and defining it. Strict — the cap means the cap. metadata.totalFiles always carries the true match count, so a truncated answer still tells you how much more there is. Suttas whose TITLE matches the query rank first within their collection. |
| query* | string | Keyword, phrase, or REGEX pattern to search for (Pali or a translation word). Patterns work and are the way to find definitions: "kata.*dukkha" (Katamañca … dukkhaṁ?), "vucc.*dukkha" (idaṁ vuccati dukkhaṁ), "katha.*dukkha" (Kathañca … hoti?). |
| scope | string |
| default|all|dhamma|vinaya|abhi|khudakka|or comma-separated nikaya codes (dn,mn,...). Default: default (4 nikayas + 6 KN books). |
| translators | array | Explicit translator keys, e.g. ["en_sujato"] to include Sujato, or ["ru_sv"]. Needed only to override the default translator choice. |
| include_segments | boolean | Also return the matched Pali segments (segment id, text, reader link). Default: false — the census alone. |
| include_translations | boolean | Also return translations of the matched segments (implies include_segments). Default: false. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"exact": {
"type": "boolean",
"description": "Whole-word match only. Default: false."
},
"langs": {
"type": "array",
"items": {
"type": "string"
},
"description": "Translation languages to include with include_translations, e.g. [\"ru\",\"en\"]. Default: none (Pali only)."
},
"limit": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
{
"type": "string",
"const": "all"
}
],
"description": "How many suttas to list: a number, or \"all\" for every match. Default: 40, composed of 25 by occurrence count plus 15 for suttas named after the term and defining it. Strict — the cap means the cap. metadata.totalFiles always carries the true match count, so a truncated answer still tells you how much more there is. Suttas whose TITLE matches the query rank first within their collection."
},
"query": {
"type": "string",
"description": "Keyword, phrase, or REGEX pattern to search for (Pali or a translation word). Patterns work and are the way to find definitions: \"kata.*dukkha\" (Katamañca … dukkhaṁ?), \"vucc.*dukkha\" (idaṁ vuccati dukkhaṁ), \"katha.*dukkha\" (Kathañca … hoti?)."
},
"scope": {
"type": "string",
"description": "default|all|dhamma|vinaya|abhi|khudakka|or comma-separated nikaya codes (dn,mn,...). Default: default (4 nikayas + 6 KN books)."
},
"translators": {
"type": "array",
"items": {
"type": "string"
},
"description": "Explicit translator keys, e.g. [\"en_sujato\"] to include Sujato, or [\"ru_sv\"]. Needed only to override the default translator choice."
},
"include_segments": {
"type": "boolean",
"description": "Also return the matched Pali segments (segment id, text, reader link). Default: false — the census alone."
},
"include_translations": {
"type": "boolean",
"description": "Also return translations of the matched segments (implies include_segments). Default: false."
}
}
}