Listen to Sadhu
by listentosadhu.app · remote · no sign-in to list tools · v1.0.1 · published by app.listentosadhu
Read-only semantic search over Vedic scripture verses, commentaries, and recorded lectures.
21 tools: 21 can delete or cancel things.
Scanned Oct 21, 2026
- Deletes or cancels21Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads0Claude Code: allow
34 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http corpus https://mcp.listentosadhu.app/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnauthor_list
The server marks "author_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "author_list" says "list": a word for reading.
- Warnauthor_list
The server marks "author_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "author_list" says "list": a word for reading.
- Warnauthor_resolve
The server marks "author_resolve" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "author_resolve" says "resolve": a word for reading.
- Warnauthor_resolve
The server marks "author_resolve" destructive (destructiveHint: true), and its name says "resolve", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "author_resolve" says "resolve": a word for reading.
- Warndocument_get
The server marks "document_get" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "document_get" says "get": a word for reading.
- Warndocument_get
The server marks "document_get" destructive (destructiveHint: true), and its name says "get", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "document_get" says "get": a word for reading.
Show 28 more findingsShow fewer
- Warndocument_list
The server marks "document_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "document_list" says "list": a word for reading.
- Warndocument_list
The server marks "document_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "document_list" says "list": a word for reading.
- Warnlocation_list
The server marks "location_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "location_list" says "list": a word for reading.
- Warnlocation_list
The server marks "location_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "location_list" says "list": a word for reading.
- Warnlocation_resolve
The server marks "location_resolve" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "location_resolve" says "resolve": a word for reading.
- Warnlocation_resolve
The server marks "location_resolve" destructive (destructiveHint: true), and its name says "resolve", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "location_resolve" says "resolve": a word for reading.
- Warnmedia_render
The server marks "media_render" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "show": a word for reading.
- Warnsearch
The server marks "search" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "search" says "search": a word for reading.
- Warnsearch
The server marks "search" destructive (destructiveHint: true), and its name says "search", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "search" says "search": a word for reading.
- Warnsource_get
The server marks "source_get" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_get" says "get": a word for reading.
- Warnsource_get
The server marks "source_get" destructive (destructiveHint: true), and its name says "get", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_get" says "get": a word for reading.
- Warnsource_get
The server marks "source_get" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_get" says "get": a word for reading.
- Warnsource_list
The server marks "source_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_list" says "list": a word for reading.
- Warnsource_list
The server marks "source_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_list" says "list": a word for reading.
- Warnsource_resolve
The server marks "source_resolve" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_resolve" says "resolve": a word for reading.
- Warnsource_resolve
The server marks "source_resolve" destructive (destructiveHint: true), and its name says "resolve", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_resolve" says "resolve": a word for reading.
- Warntrack_get
The server marks "track_get" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "track_get" says "get": a word for reading.
- Warntrack_get
The server marks "track_get" destructive (destructiveHint: true), and its name says "get", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "track_get" says "get": a word for reading.
- Warntrack_list
The server marks "track_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "track_list" says "list": a word for reading.
- Warntrack_list
The server marks "track_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "track_list" says "list": a word for reading.
The server marks "transcript_window" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "read": a word for reading.
- Warnverse_get
The server marks "verse_get" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "verse_get" says "get": a word for reading.
- Warnverse_get
The server marks "verse_get" destructive (destructiveHint: true), and its name says "get", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "verse_get" says "get": a word for reading.
- Warnverse_list
The server marks "verse_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "verse_list" says "list": a word for reading.
- Warnverse_list
The server marks "verse_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "verse_list" says "list": a word for reading.
- Warnverse_render
The server marks "verse_render" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "show": a word for reading.
- Warnverse_synonyms
The server marks "verse_synonyms" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "fetch": a word for reading.
The server marks "verse_translation" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "fetch": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
21 tools
Deletes or cancels 21Claude Code: deny
author_listList all authors.2 findings
Why it is in this group
- The name "author_list" says "list": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "author_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "author_list" says "list": a word for reading.
- Warn
The server marks "author_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "author_list" says "list": a word for reading.
Description, as the server wrote it List all authors.
Annotations the server declares
- title: List authors
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
author_resolveFind a author by name (fuzzy).2 findings
Why it is in this group
- The name "author_resolve" says "resolve": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "author_resolve" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "author_resolve" says "resolve": a word for reading.
- Warn
The server marks "author_resolve" destructive (destructiveHint: true), and its name says "resolve", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "author_resolve" says "resolve": a word for reading.
Description, as the server wrote it Find a author by name (fuzzy).
Annotations the server declares
- title: Find author
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
document_getGet a document (commentary/prose_chapter/letter) by id.2 findings
Why it is in this group
- The name "document_get" says "get": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "document_get" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "document_get" says "get": a word for reading.
- Warn
The server marks "document_get" destructive (destructiveHint: true), and its name says "get", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "document_get" says "get": a word for reading.
Description, as the server wrote it Get a document (commentary/prose_chapter/letter) by id.
Annotations the server declares
- title: Get document
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
document_listList documents at a reference / in a book.2 findings
Why it is in this group
- The name "document_list" says "list": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "document_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "document_list" says "list": a word for reading.
- Warn
The server marks "document_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "document_list" says "list": a word for reading.
Description, as the server wrote it List documents at a reference / in a book. A verse's purport = document_list(source, tokens, kind:"commentary").
Annotations the server declares
- title: List documents
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
excerpt_prepareGenerate (or fetch, if cached) the audio clip for a lecture passage and return its playable URL.No findings
Why it is in this group
- The description's first verb is "generate": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Generate (or fetch, if cached) the audio clip for a lecture passage and return its playable URL. This is the excerpt player's Play action — it is called for you by the player UI on demand. Agents should use excerpt_render to show the player, not call this directly. Idempotent: same track+window returns the same cached clip.
Annotations the server declares
- title: Prepare excerpt audio
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
excerpt_renderLet the user HEAR a lecture passage inline.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Let the user HEAR a lecture passage inline. Call this when the user wants to LISTEN to a specific moment in a track — e.g. from a search(types:["track"]) hit, pass its track_id plus start_ms/end_ms. Renders an inline audio player that generates the clip on demand (public share-audio, max 10 minutes).
Annotations the server declares
- title: Play excerpt
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
location_listList all locations.2 findings
Why it is in this group
- The name "location_list" says "list": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "location_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "location_list" says "list": a word for reading.
- Warn
The server marks "location_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "location_list" says "list": a word for reading.
Description, as the server wrote it List all locations.
Annotations the server declares
- title: List locations
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
location_resolveFind a location by name (fuzzy).2 findings
Why it is in this group
- The name "location_resolve" says "resolve": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "location_resolve" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "location_resolve" says "resolve": a word for reading.
- Warn
The server marks "location_resolve" destructive (destructiveHint: true), and its name says "resolve", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "location_resolve" says "resolve": a word for reading.
Description, as the server wrote it Find a location by name (fuzzy).
Annotations the server declares
- title: Find location
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
media_renderShow/play an existing corpus VIDEO clip inline.1 finding
Why it is in this group
- The description's first verb is "show": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "media_render" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "show": a word for reading.
Description, as the server wrote it Show/play an existing corpus VIDEO clip inline. Call this when the user wants to WATCH a clip found via search(types:["media"]) — pass the hit's media_id. Renders an inline video player.
Annotations the server declares
- title: Play video
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
searchSemantic + lexical search over the corpus.2 findings
Why it is in this group
- The name "search" says "search": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "search" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "search" says "search": a word for reading.
- Warn
The server marks "search" destructive (destructiveHint: true), and its name says "search", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "search" says "search": a word for reading.
Description, as the server wrote it Semantic + lexical search over the corpus. Returns verses, documents, track passages and titles matching a natural-language query, each with the id needed to fetch the full record (verse_id→verse_get, document_id→document_get, track_id+start_ms/end_ms→transcript_window; media_id→media_render to play the clip). Every filter is optional. Use min_score to drop weak matches.
Annotations the server declares
- title: Search
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
source_getGet one book by id or code ("source_…" or "BG"/"БГ").3 findings
Why it is in this group
- The name "source_get" says "get": a word for reading.
- The input takes a statement or command to run (input.code), which can change anything it can reach.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "source_get" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_get" says "get": a word for reading.
- Warn
The server marks "source_get" destructive (destructiveHint: true), and its name says "get", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_get" says "get": a word for reading.
- Warn
The server marks "source_get" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_get" says "get": a word for reading.
Description, as the server wrote it Get one book by id or code ("source_…" or "BG"/"БГ").
Annotations the server declares
- title: Get book
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
source_listList all books (Caitanya-caritāmṛta is three sources).2 findings
Why it is in this group
- The name "source_list" says "list": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "source_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_list" says "list": a word for reading.
- Warn
The server marks "source_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_list" says "list": a word for reading.
Description, as the server wrote it List all books (Caitanya-caritāmṛta is three sources).
Annotations the server declares
- title: List books
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
source_resolveFind a book by name (fuzzy): "gita", "бхагаватам", "CC Madhya".2 findings
Why it is in this group
- The name "source_resolve" says "resolve": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "source_resolve" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_resolve" says "resolve": a word for reading.
- Warn
The server marks "source_resolve" destructive (destructiveHint: true), and its name says "resolve", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "source_resolve" says "resolve": a word for reading.
Description, as the server wrote it Find a book by name (fuzzy): "gita", "бхагаватам", "CC Madhya".
Annotations the server declares
- title: Find book
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
track_getGet a track (lecture/conversation): metadata, cited references, transcript/pdf availability.2 findings
Why it is in this group
- The name "track_get" says "get": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "track_get" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "track_get" says "get": a word for reading.
- Warn
The server marks "track_get" destructive (destructiveHint: true), and its name says "get", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "track_get" says "get": a word for reading.
Description, as the server wrote it Get a track (lecture/conversation): metadata, cited references, transcript/pdf availability.
Annotations the server declares
- title: Get lecture
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
track_listList tracks, filterable by reference (source[+tokens] = tracks citing it), author/location/kind/date/lang.2 findings
Why it is in this group
- The name "track_list" says "list": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "track_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "track_list" says "list": a word for reading.
- Warn
The server marks "track_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "track_list" says "list": a word for reading.
Description, as the server wrote it List tracks, filterable by reference (source[+tokens] = tracks citing it), author/location/kind/date/lang. No filter ⇒ recent tracks (date desc).
Annotations the server declares
- title: List lectures
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
transcript_windowRead a track's transcript around a time window (from a search track hit or track_list).1 finding
Why it is in this group
- The description's first verb is "read": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "transcript_window" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "read": a word for reading.
Description, as the server wrote it Read a track's transcript around a time window (from a search track hit or track_list). Widen with pad_ms.
Annotations the server declares
- title: Read transcript
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
verse_getFetch a verse's raw fields for your own reasoning (NOT for display — to show a verse to the user, use verse_render).2 findings
Why it is in this group
- The name "verse_get" says "get": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "verse_get" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "verse_get" says "get": a word for reading.
- Warn
The server marks "verse_get" destructive (destructiveHint: true), and its name says "get", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "verse_get" says "get": a word for reading.
Description, as the server wrote it Fetch a verse's raw fields for your own reasoning (NOT for display — to show a verse to the user, use verse_render). Returns original script + transliteration as line arrays; with lang, also the canonical translation inline plus an `alternatives` manifest of other translation kinds in that language (fetch their text with verse_translation, word-by-word with verse_synonyms). Address by ref ("BG 2.13"), source+tokens, or verse id.
Annotations the server declares
- title: Get verse
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
verse_listList the verses of a book / chapter.2 findings
Why it is in this group
- The name "verse_list" says "list": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "verse_list" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "verse_list" says "list": a word for reading.
- Warn
The server marks "verse_list" destructive (destructiveHint: true), and its name says "list", a word for reading.
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The name "verse_list" says "list": a word for reading.
Description, as the server wrote it List the verses of a book / chapter. Skips .0 chapter summaries; collapses merged verses into one item with a covers span.
Annotations the server declares
- title: List verses
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
verse_renderShow a verse to the user.1 finding
Why it is in this group
- The description's first verb is "show": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "verse_render" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "show": a word for reading.
Description, as the server wrote it Show a verse to the user. THE DEFAULT way to display/read a scripture verse: renders an inline card with the original script (centered), transliteration in the requested language, the word-by-word, and the translation — all at once. Use this whenever the user asks to see, read, open, or quote a specific verse ("покажи БГ 2.13", "read Bhagavad-gita 2.13"). The other verse_* tools are for fetching raw data; for DISPLAY prefer this one. Address by ref ("BG 2.13"), source+tokens, or id; lang sets the script + translation language.
Annotations the server declares
- title: Show verse
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
verse_synonymsFetch the word-by-word ("Synonyms") as a raw {word, meaning} array for one verse translation (data — verse_render already shows the word-by-word inside the card).1 finding
Why it is in this group
- The description's first verb is "fetch": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "verse_synonyms" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "fetch": a word for reading.
Description, as the server wrote it Fetch the word-by-word ("Synonyms") as a raw {word, meaning} array for one verse translation (data — verse_render already shows the word-by-word inside the card). Defaults to the canonical rendering; pass `kind` for an alternative.
Annotations the server declares
- title: Word-by-word
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
verse_translationFetch the text of ONE translation of a verse (data, not a card — to display a verse use verse_render).1 finding
Why it is in this group
- The description's first verb is "fetch": a word for reading.
- The server marks it destructive (destructiveHint: true).
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "verse_translation" both read-only (readOnlyHint: true) and destructive (destructiveHint: true).
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "fetch": a word for reading.
Description, as the server wrote it Fetch the text of ONE translation of a verse (data, not a card — to display a verse use verse_render). Defaults to the canonical (kind=canonical); pass a `kind` from verse_get's `alternatives` manifest to fetch a specific rendering.
Annotations the server declares
- title: Get translation
- readOnlyHint: true
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http corpus https://mcp.listentosadhu.app/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [],
"ask": [],
"deny": [
"mcp__corpus__author_list",
"mcp__corpus__author_resolve",
"mcp__corpus__document_get",
"mcp__corpus__document_list",
"mcp__corpus__excerpt_prepare",
"mcp__corpus__excerpt_render",
"mcp__corpus__location_list",
"mcp__corpus__location_resolve",
"mcp__corpus__media_render",
"mcp__corpus__search",
"mcp__corpus__source_get",
"mcp__corpus__source_list",
"mcp__corpus__source_resolve",
"mcp__corpus__track_get",
"mcp__corpus__track_list",
"mcp__corpus__transcript_window",
"mcp__corpus__verse_get",
"mcp__corpus__verse_list",
"mcp__corpus__verse_render",
"mcp__corpus__verse_synonyms",
"mcp__corpus__verse_translation"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as corpus. Review it before you use it.