# Tripitaka MCP (remote · mcp.tripitaka-mcp.com)

MCP server for the full Pāli Canon — search, cite, compare translations. Offered as Dhamma Dāna.

- Trust score: 69/100 (medium)
- Change this week: +5
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.tripitaka-mcp.com`: 75/100, [markdown](https://verifymcp.io/servers/dhamma-seeker-tripitaka-mcp/mcp.md), [page](https://verifymcp.io/servers/dhamma-seeker-tripitaka-mcp/mcp)
- remote · `mcp.tripitaka-mcp.com`: 69/100 (this document), [markdown](https://verifymcp.io/servers/dhamma-seeker-tripitaka-mcp/mcp-2.md), [page](https://verifymcp.io/servers/dhamma-seeker-tripitaka-mcp/mcp-2)

## Channel facts

- Endpoint: `https://mcp.tripitaka-mcp.com/sse`
- Transports: `sse`
- Auth: `none`
- Version: `1.3.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 40/100
  - Verified sse transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 73/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 8896 tokens (~593/item across 15 items; 13 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 96/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 85% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add --transport http dhamma-seeker-tripitaka-mcp https://mcp.tripitaka-mcp.com/sse
```

### Codex

```toml
[mcp_servers.dhamma-seeker-tripitaka-mcp]
url = "https://mcp.tripitaka-mcp.com/sse"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dhamma-seeker-tripitaka-mcp": {
      "type": "remote",
      "url": "https://mcp.tripitaka-mcp.com/sse",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add dhamma-seeker-tripitaka-mcp --url https://mcp.tripitaka-mcp.com/sse --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  dhamma-seeker-tripitaka-mcp:
    url: "https://mcp.tripitaka-mcp.com/sse"
```

### Other

```json
{
  "mcpServers": {
    "dhamma-seeker-tripitaka-mcp": {
      "type": "http",
      "url": "https://mcp.tripitaka-mcp.com/sse"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 69, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 68, +3)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 65, −1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 66, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] New tool “define_from_suttas”

### 2026-07-28 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 64, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 64)

First indexed and scored.

## MCP tools (13)

### `search_by_keyword` (~601 tokens)

Keyword Search

Keyword search across the Pāli Tipiṭaka (trigram word-similarity).

Searches the configured enabled language(s) on the server. Filterable
by pitaka and translation edition.

💡 **Hints for the AI client:**
The system's canonical reference is Romanised Pāli (from SuttaCentral).
If the user asks in a disabled or unsupported language, translate the
keyword to **Romanised Pāli (preferred) or English** before calling this
tool — e.g. "suffering" → "dukkha", "mindfulness of breathing" →
"ānāpānassati". See the server instructions for the enabled language set.

🔍 **Pick the right search tool for the question shape:**
\- **Term lookup (exact word appearances)** — e.g. "occurrences of
  \`ānāpānassati`": this tool is best (trigram nails the exact word).
\- **Concept search ("discourses about X")** — e.g. "discourses about
  mindfulness of breathing": **use `search_hybrid` instead.** Canonical
  Pāli has two quirks that hurt keyword search for concepts:
    • Section headings (`Ānāpānapabba`) often use a different word than
      the teaching body, which uses verb forms (`assasati`, `passasati`,
      `dīghaṁ`, `rassaṁ`). E.g. DN22's Ānāpānapabba has 16 segments but
      the word `ānāpāna` appears in only 2 (header + footer) — the
      actual teaching segments won't match.
    • Stock phrases (e.g. `So satova assasati, satova passasati`)
      recur in 10+ suttas, so a keyword query ranks broadly and won't
      pinpoint the canonical reference.
\- **General keyword survey** — set `limit≥30` and filter client-side,
  or call multiple related forms (root verb + noun + compound).

Input parameters:

- `edition`: Thai translation edition — "dhiranandi", "jayasaro", "mbu",       "royal" or None. Only used when language="thai" and Thai is       enabled on the server.
- `keyword` (string, required): The word/phrase to search for.
- `language` (string): Search language — must be in the server's ENABLED_LANGUAGES       (default: "pali"). Disabled languages return an error.
- `limit` (integer): Maximum results (default: 10, max: 50).
- `pitaka`: Filter by pitaka — "vinaya", "sutta", "abhidhamma" or None     (all). ✅ v1.1+: all three pitakas at parity with SuttaCentral     bilara — see list_structure for live counts.

Output parameters:

- `result` (array)

### `survey_corpus` (~627 tokens)

Survey Corpus (exhaustive)

Exhaustively survey the WHOLE Tipiṭaka for a term — guaranteed complete.

Use this (not `search_by_keyword`) when the question is about **coverage or
counting** rather than "show me the best passages":
\- "How many times does Kusinārā appear in the canon?"
\- "Every place ānāpānassati is mentioned — don't miss any"
\- "Which pitakas/how many suttas mention this term?"

Unlike `search_by_keyword` (ranked, capped at 50, no total), this returns an
\**exact count**, a **per-pitaka breakdown**, the **distinct surface forms**
that matched (so you can audit and discard over-matches), and a paginated
enumeration. The `lexical` result carries `complete: true` — a hard
guarantee that nothing was dropped for the chosen `match_scope`.

Two layers, two different promises:
\- **lexical** — the word and its forms. Deterministic + EXHAUSTIVE.
\- **semantic** (`mode="thorough"`, hosted only) — passages teaching the same
  concept with DIFFERENT vocabulary (e.g. ānāpānassati via
  \`assasati`/`passasati`). Approximate, **NOT exhaustive** — it never claims
  completeness, it only boosts recall.

Input parameters:

- `cursor` (integer): Offset into the full lexical result set for pagination.
- `keyword` (string, required): Term to survey (Romanised Pāli preferred; diacritics optional —      matching folds `ā→a`, `ṁ→m`, etc.).
- `language` (string): "pali" (default) or "english". Thai is not indexed yet.
- `match_scope` (string): "word" (default) matches the exact word/phrase only.          "stem" also matches inflections + compounds via prefix          (kusinārā → kusinārāyaṁ, kusināravagga …) — higher recall,          may o…
- `mode` (string): "fast" (default) = lexical only — quick, no server-side ML, works   offline. "thorough" = also run the semantic layer (hosted only;   this is the heavier part). The lexical guarantee holds in BOTH.
- `page_size` (integer): Lexical results per page (default 20, max 100). Counts/forms        cover the WHOLE corpus regardless of this.
- `pitaka`: Restrict to "vinaya" / "sutta" / "abhidhamma", or None for all.
- `sem_limit` (integer): Max semantic hits (default 50, max 200). `capped` flags when        reached. Only used when mode="thorough".
- `sem_threshold` (number): Max cosine distance for semantic hits (default 0.7;            lower = stricter). Only used when mode="thorough".

### `get_sutta` (~1944 tokens)

Get Sutta

Fetch a sutta's content — OR its table of contents (`mode="outline"`).

⚡ **Decide which mode BEFORE calling — don't fetch the whole sutta and
parse it yourself:**
\- The user wants the **structure / outline / table of contents**, or asks
  \**"how many sections/parts"** / "what's in it" → call
  \`get_sutta(sutta_id, mode="outline")`. It returns the section list
  (titles + segment counts + ids), NOT the full text — cheap and exact.
\- The user wants the **context around a search hit** → `around="<segment_id>"`
  (search tools hand you the id, e.g. `dn22:18.1`) + optional `window`.
\- The user wants a **specific part** you already located → `segment_range="A..B"`
  or `offset`+`limit`.
\- Only fetch the **whole** sutta (no mode/selector) when the user actually
  wants to read/quote a SHORT sutta in full. Long ones (DN, long
  Vinaya/Abhidhamma; > ~400 segments — e.g. `dn16` is 1,664) should almost
  always start with `mode="outline"`; pulling the entire text wastes the
  context window.

Uses standard SuttaCentral IDs, e.g.:
\- `mn1` = Majjhima Nikāya sutta 1 (Mūlapariyāyasutta, 334 segments)
\- `dn22` = Dīgha Nikāya sutta 22 (Mahāsatipaṭṭhānasutta, 454 segments)
\- `dn16` = Dīgha Nikāya sutta 16 (Mahāparinibbānasutta — the longest
  sutta in the canon, 1,664 segments)
\- `sn56.11` = Saṃyutta 56.11 (Dhammacakkappavattana)
\- `mn62` = Majjhima Nikāya 62 (Mahārāhulovāda — advice to Rāhula)
\- `dhp1-20` = Dhammapada verses 1-20 (KN uses range format)
\- `mil3.1.1` = Milindapañha 3.1.1 (paracanonical, 3–4 level id)

💡 **Hints for the AI client:**
\- **Quote `text_pali` / `text_english` directly from the returned
  segments** — do not rely on training memory. The system is
  verifiable; AI recall is often wrong.
\- Short segments ending in `:0.1` or `:0.2` are usually **headers**
  (nikāya/sutta names), not the teaching itself — actual content
  starts around `:1.1`.
\- Segments ending in "...niṭṭhitaṁ" (e.g. `mn1:194.10` =
  "Mūlapariyāyasuttaṁ niṭṭhitaṁ paṭhamaṁ") are **colophons**…

Input parameters:

- `around`: A segment_id to center on (e.g. "dn22:18.1"). Returns the     `window` segments before and after it. Ignored if None.
- `edition`: Thai translation edition — "dhiranandi", "jayasaro",      "mbu", "royal", or None. If None, uses `text_thai` from      bilara-data. ⚠️ The DB has no Thai editions loaded yet,      so most values retu…
- `language` (string): Which language to return — "pali", "thai", "english",       or "all" (default: "pali"). Thai is currently disabled       on the server, so Thai fields return null.
- `limit`: Max segments to return from `offset` (default None = to end,    clamped 1–2000).
- `mode` (string): "full" (default, returns segment text) or "outline" (table of   contents only — section keys/titles/counts, no segment text).
- `offset` (integer): 0-based ordinal start for paging (default 0).
- `segment_range`: Inclusive slice "<startId>..<endId>" (e.g.            "dn16:2.1.0..dn16:2.2.8"). Omit the end id to read to            the sutta's end. Uses the `..` separator.
- `sutta_id` (string, required): Sutta ID, e.g. "mn1", "dn22", "sn56.11", "dhp1-20".
- `window` (integer): Segments before AND after `around` (default 10, clamped 0–200).

### `search_semantic` (~352 tokens)

Semantic Search

Semantic search — match by meaning, not exact words.

Uses vector similarity (cosine distance) over `text_pali` embedded with
a multilingual MiniLM model.

🤔 **In most cases you should use `search_hybrid` instead** — it
combines this semantic search with keyword search and ranks better.
Use this tool only when you need:
\- Pure semantic results (no keyword influence)
\- Fine-grained `threshold` tuning (hybrid uses RRF which is harder
  to tune)
\- To debug what semantic alone picks up vs keyword

⚠️ Known limitations:
\- The index is **Pāli only** (English/Thai queries pass through the
  multilingual embedding but the model isn't tuned on Pāli)
\- English queries usually embed better than Thai (model is EN-primary)
\- For specific Pāli terms (`appamāda`, `dukkha`), exact match is
  better — use `search_by_keyword` instead
\- Pāli stock phrases recur in many suttas → similarity scores
  cluster; read the top 10, don't trust rank 1 alone

Input parameters:

- `language` (string): Output language — "pali", "thai", "english", or "all"       (Thai disabled → null).
- `limit` (integer): Maximum results (default: 5, max: 20).
- `query` (string, required): Query text (English works best, then Pāli, Thai is weakest).
- `threshold` (number): Maximum cosine distance (smaller = stricter match).        Default 0.7; lower to 0.5 for tighter matches, raise        to 0.9 for broader.

Output parameters:

- `result` (array)

### `search_hybrid` (~351 tokens)

Hybrid Search

Hybrid search — combines keyword + semantic search via RRF.

Uses Reciprocal Rank Fusion (RRF) to merge exact-word results with
meaning-based results. **This is the recommended tool for "discourses
about X" / concept queries**, because the semantic side catches suttas
that discuss a concept using different vocabulary (e.g. some
mindfulness-of-breathing suttas use `assasati/passasati/dīghaṁ`
instead of `ānāpānassati`).

💡 **Hints for the AI client:**
\- English queries usually work best (e.g. `mindfulness of breathing`)
  because the embedding model is multilingual but EN-primary.
\- Thai stop-word handling is weak. If a Thai query underperforms, the
  AI client should translate to Pāli/English first (see server
  instructions).
\- The default `limit=5` is often too small for a topic survey — use
  \`limit=15-20` (max 20) for good coverage.
\- Ranking is by similarity, NOT canonical importance — locus
  classicus suttas (e.g. MN118, DN22) may rank below smaller suttas
  that happen to use the exact vocabulary. Treat results as a
  starting point, then call `get_sutta` for the canonical references.

Input parameters:

- `language` (string): Output language — "pali", "thai", "english", or "all".
- `limit` (integer): Maximum results (default: 5, max: 20).
- `query` (string, required): Query text (Thai, Pāli, or English — English works best).

Output parameters:

- `result` (array)

### `list_structure` (~559 tokens)

List Tipiṭaka Structure

Show the structure of all three pitakas with coverage statistics.

💡 **Use this tool when:**
\- The user asks for an overview of the Tipiṭaka (what's in it / which
  collections).
\- You need to check coverage before promising a search will find
  something — `segment_count > 0` is the active-loaded signal.
\- Verifying scope when compiling an artifact.

📊 **Current state (v1.1+, at parity with SuttaCentral bilara-data):**
\- **Sutta Piṭaka** complete: DN 37, MN 155, SN 1,829, AN 1,419, KN
  2,351 sections (~284,702 segments) — Pāli + Sujato EN
\- **Vinaya Piṭaka** complete: Bhikkhu Vibhaṅga 222, Bhikkhunī Vibhaṅga
  127, Khandhaka 22, Parivāra 51 + Pātimokkha 2 (~71,557 segments) —
  Pāli + Brahmali EN
\- **Abhidhamma Piṭaka** complete: 7 books (ds, vb, dt, pp, kv, ya,
  patthana) ~88,414 segments — Pāli only (bilara has no English for
  any Abhidhamma book)
\- **Total ~444,673 segments** in the DB

⚠️ **Known quirks:**
\- The schema carries duplicate legacy + SC-modern codes side by side:
  \- Vinaya: `vin-v/vin-m/vin-c/vin-p` (legacy, segment_count = 0)
    alongside `pli-tv-bu-vb/pli-tv-bi-vb/pli-tv-kd/pli-tv-pvr`
    (active, populated).
  \- Abhidhamma: `ym/pt` (legacy = 0) alongside `ya/patthana` (active).
\- **Use the `active` flag** — each nikaya carries `active: true/false`
  (true ⇔ `segment_count > 0`). Pick `active` nikayas; the others are
  metadata placeholders from an older migration.

🌐 **Languages:** Returns Pāli + Thai + English labels regardless of
enabled set (these are metadata, not segment text). Text content
follows ENABLED_LANGUAGES. Thai translations aren't loaded yet.

Returns:
    Hierarchical structure:
    - pitakas{vinaya/sutta/abhidhamma} → nikayas[]
    - Each nikaya: code, name (3 languages), sutta_count, segment_count.

### `get_reference` (~143 tokens)

Get Citation

Build a proper citation string for a sutta.

💡 **Use this tool when:**
\- The user wants a citation for academic work, an article, or a reference.
\- You need to know the canonical location of a sutta (pitaka / nikāya).
\- You want a ready-to-use formatted citation string.

🔗 vs `get_sutta`: this tool returns metadata + citation only, no
segments. Pair it with `get_sutta` when you want both the content
and the citation.

Input parameters:

- `sutta_id` (string, required): Sutta ID, e.g. "mn1", "dn22", "sn56.11".

### `list_editions` (~261 tokens)

List Translation Editions

List the translation editions available, with coverage stats.

💡 **Use this tool when:**
\- Before calling `compare_translations` or `get_sutta(edition=...)`,
  so you know which edition values are valid and worth comparing.
\- The user asks which editions are loaded in the DB.

🔍 **Filtering:** Filtered by the server's `TRIPITAKA_ENABLED_LANGUAGES`
— when Thai is disabled the list is empty. Only enabled languages
are returned.

⚠️ **Current state:** the DB mostly holds Pāli (default from
SuttaCentral bilara) and English (Sujato). Thai editions
(`dhiranandi`, `jayasaro`, `mbu`, `royal`) aren't indexed yet — the
list returns empty until they're loaded.

Returns:
    List of edition objects, each containing:
    - edition: edition code, e.g. "sujato", "dhiranandi", "mbu"
    - translator: translator's name
    - language: ISO code ("pi", "en", "th")
    - segment_count: how many segments have a translation in this edition
    - sutta_count: how many suttas have a translation.

Output parameters:

- `result` (array)

### `compare_translations` (~332 tokens)

Compare Translations

Compare every available translation for a single segment.

💡 **Use this tool when:**
\- The user asks about the meaning/translation of a single Pāli line
  and wants to see multiple translators side-by-side.
\- Checking how different translators interpret the same line —
  technical terms like `dukkha`, `anattā`, `nibbāna` carry nuance
  that varies across translations.
\- Academic work that needs to quote multiple translations.

🔍 **vs `get_sutta`:** this tool targets a **single segment** (line
level); `get_sutta` returns the **whole sutta**. To compare a whole
sutta you'd call `compare_translations` for each segment.

📋 **segment_id format:** `<sutta_id>:<paragraph>.<line>`, e.g.
\`mn1:171.4` (Mūlapariyāyasutta paragraph 171 line 4 — "Nandī
dukkhassa mūlaṁ"). Find segment_ids via `get_sutta` or search results.

⚠️ **Current state:** the `translation` table is mostly empty (the DB
only loads default Pāli + English from bilara). `total_editions` is
usually 0; `text_pali` and `text_english` are always populated. Thai
editions will be added later.

Input parameters:

- `segment_id` (string, required): Segment ID, e.g. "mn26:8.2", "dn22:17.1", "mn62:5.3".

### `get_word_definition` (~238 tokens)

Get Word Definition

Look up the dictionary meaning of a Pāli word, with sutta context.

Serves as a Pāli Dictionary Bridge — pairs the "definition" with the
"context where the Buddha actually used the word".

📖 **About the dictionary sources:**
This tool draws from multiple primary dictionaries, including
"พจนานุกรมพุทธศาสน์ ฉบับประมวลศัพท์" (Buddhist Dictionary —
Concept-Glossary edition) by Somdet Phra Buddhaghosacariya (P. A.
Payutto). The Thai-language entries are **original scholarly works**
(not translations), so they are **always available** even when
ENABLED_LANGUAGES has Thai disabled. The AI client should translate
Thai entries into the user's language if needed.

Input parameters:

- `language` (string): Dictionary language (e.g. "en", "thai", or "all" as       default).
- `limit_context` (integer): Number of sutta-context examples to include (1-5).
- `word` (string, required): Word to look up (e.g. "dukkha", "กฐิน").

### `define_from_suttas` (~525 tokens)

Define From Suttas

Find how the **suttas and Vinaya define a Pāli term in their own words**.

The canon defines its own terms with fixed formulas — "Katamañca …
dukkhaṁ?" (what is X?) … "ayaṁ vuccati … dukkhaṁ" (this is called X),
"X adhivacana" (X is a designation for …), or the Vinaya "X nāma". This
tool locates those definitional passages and returns them **cited**, so
the assistant can present the doctrinal essence straight from the source.

🧭 **This tool vs `get_word_definition`:**
\- **`define_from_suttas`** → the *doctrinal* definition, how the term is
  defined **inside the canon**. Use for "how do the suttas define X",
  "what is the canonical definition of X", "define X from the suttas".
  Returns a few precise segments, not a lexicon essay.
\- **`get_word_definition`** → the *lexical* definition from dictionaries
  (Payutto / PTS / DPPN). Use for etymology and word meaning.
They complement each other — offer both when the user wants the full
picture (dictionary sense + how the Buddha defined it).

📖 **How to present the result:**
Results are ranked; the top one is usually the canonical definition.
\**Quote the Pāli (and English where present) verbatim** and render each
\`cross_reference.tripitaka_mcp_reader.segment_url` as clickable markdown
so the user can verify. Do NOT paraphrase into your own definition — the
point is the canon's own words. Each result is tagged `kind`
(direct / simile) and `detail` (descriptive / enumerative); a
\*descriptive* definition characterises the term, an *enumerative* one
lists its types — prefer the descriptive when explaining the essence.

Input parameters:

- `include_similes` (boolean): Include indirect definitions by simile/metaphor              (seyyathāpi …, "is a designation for …"). Default True.
- `limit` (integer): Max definitional passages to return (1–15, default 5).
- `term` (string, required): Pāli term in its base/dictionary form (e.g. "dukkha",   "viññāṇa", "samādhi"). Diacritics optional — folded internally.

### `parse_pali_word` (~340 tokens)

Parse Pāli Word

Strip Pāli inflectional suffixes to find the root form (basic stem).

💡 **Use this tool when:**
\- You find an inflected Pāli word (e.g. `dukkhassa`, `bhikkhūnaṁ`) and
  \`get_word_definition` doesn't find it directly — Pāli inflects nouns
  across 7 cases × 2 numbers, ~16 forms per root.
\- You want to split a compound (`sammāsambuddhassa` → `sammā` +
  \`sambuddha` + `-ssa` genitive).
\- You want to see possible stems before another `get_word_definition`
  lookup.

🔄 **Recommended workflow:**
\`parse_pali_word(inflected_form)` → get `possible_stems[]` →
call `get_word_definition(stem)` per stem until you find a definition.

⚠️ **Limitations:**
\- Rule-based first-pass — strips common suffixes (case endings, vowel
  shortening). Not a full morphological analyzer.
\- Compound words (samāsa) are NOT split — `dukkhanirodha` won't be
  broken into `dukkha` + `nirodha`.
\- Sandhi (sound junctions) like `tena ahaṁ → tenāhaṁ` aren't reversed.
\- Returns **possible** stems — verify each via `get_word_definition`.

Input parameters:

- `word` (string, required): An inflected Pāli word (e.g. "dukkhassa", "bhikkhūnaṁ",   "sīlavā").

### `open_sutta_viewer` (~706 tokens)

Open an interactive sutta viewer inside the chat — Pāli + English,
plus an optional third row in the user's own language translated BY YOU.

Renders each segment as: Pāli on top (canonical), the Bhikkhu Sujato
English below it (verification anchor), and — when you supply
\`translations` — your translation in the user's language, clearly
badged as AI-generated. Prefer this over dumping raw segments when the
user wants to *read* a sutta.

\- `sutta_id` — standard SuttaCentral id, e.g. `sn56.11`, `mn10`, `dn22`.
\- `around` — a segment_id (e.g. `dn22:18.1`, from a search hit) to centre
  on; that segment is highlighted and scrolled into view. Use this after
  a search so the reader lands on the exact cited line.
\- `offset` — 0-based segment index for paging long suttas (use
  \`next_offset` from the previous result). Do NOT combine with `around`.
\- `window` — segments before/after `around` to include (default 12).

🌐 **Translating for the user (important):** when the conversation
language is neither English nor Pāli, you SHOULD translate the displayed
segments and pass them via `translations` so the user reads in their own
language while still seeing the originals:
1\. Fetch the segments first (`get_sutta` with the same selector) so you
   have the exact Pāli + English text. (Already called this tool without
   translations? The result contains the segments — translate them and
   call this tool AGAIN with the same selector plus `translations` to
   upgrade the view.) Your translation must travel through the
   \`translations` parameter to appear in the viewer — writing it as a
   normal chat message leaves the viewer bilingual and looks broken; the
   tool always accepts `translations`, so never report it as missing.
2\. Translate **from the Pāli as the source, using the English as a
   semantic guide** — never relay-translate from English alone. Preserve
   untranslatable doctrinal terms (dukkha, jhāna, taṇhā…) as loanwords
   with a brief gloss instead of forcing equival…

Input parameters:

- `around`
- `offset` (integer)
- `sutta_id` (string, required)
- `translation_disclaimer`
- `translation_language`
- `translations`
- `window` (integer)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/dhamma-seeker-tripitaka-mcp/mcp-2#diagnostics

## Score history

- 2026-08-03: 69
- 2026-08-02: 69
- 2026-08-01: 68
- 2026-07-31: 68
- 2026-07-30: 65
- 2026-07-29: 66
- 2026-07-28: 65
- 2026-07-27: 64
- 2026-07-26: 64

## Links

- Remote endpoint: https://mcp.tripitaka-mcp.com/sse
- Repository: https://github.com/dhamma-seeker/tripitaka-mcp
- Website: https://tripitaka-mcp.com/
- Changelog RSS feed: https://verifymcp.io/servers/dhamma-seeker-tripitaka-mcp/mcp-2/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/dhamma-seeker-tripitaka-mcp/mcp-2/changelog.json
- HTML version of this page: https://verifymcp.io/servers/dhamma-seeker-tripitaka-mcp/mcp-2
