Scripture study system with semantic search and personal knowledge graph. Search the Scriptures. Complete KJV Bible (31,102 verses) with semantic embeddings and a personal knowledge graph for study notes, prayers, and insights.
The KARP Word Graph server exhibits mixed definition quality. Tools have descriptions that are detailed and context-aware, with strong guidance embedded in comments. However, the actual tool registration code is truncated in the provided source, limiting visibility into schema completeness. Of the 12 tools, descriptions are comprehensive (averaging 180-320 characters) and include domain-specific instructions (e.g., 'set context field to passage reference like ROM.8.28'). Naming is clear and action-oriented (remember, recall, forget, search_scripture, read_scripture). Parameter schemas are visible for some tools and include type constraints (enums for reading_plan 'action'), but the schema definitions appear incomplete or truncated in the source excerpt. Critical gaps: (1) No error handling guidance visible in tool descriptions, no recovery patterns, no validation feedback for invalid inputs. (2) Tool `remember` lacks explicit documentation of return value (what ID is assigned to saved notes?). (3) `reading_plan` has conditional parameters (name/description/readings required only for 'create' action) but this dependency is not clearly stated. (4) Several tools accept reference strings (e.g., 'ROM.8.28-JHN.4.7') but format constraints are vague. (5) No visible output schemas or pagination hints for tools that return collections (recall, search_scripture, study_history). The embedded system prompt is exceptionally well-written and shows domain expertise, but does not substitute for formal parameter and output documentation.
Create a connection/relationship between two nodes in the knowledge graph. Use this to build semantic links between study notes, passages, prayers, and insights. Example: connect a study note about grace to another note about forgiveness with relationship 'related_to'. Helps the knowledge graph grow and become more connected.
Find cross-references and related passages to a given scripture. Shows passages that echo, complement, or contrast with the given passage. Useful for seeing how themes repeat across the Old Testament and New Testament, and building a fuller understanding of a doctrine or concept.
Permanently delete a node and all its connections. Use sparingly and only for obvious mistakes. Cannot be undone.
Get statistics about the scripture database and personal knowledge graph. Shows total verses loaded, number of books, study notes saved, connections made, etc. Useful for understanding the size of the user's study data.
Generate semantic embeddings for all scripture passages in the database. This enables semantic search ("What does the Bible say about...?") across the KJV. Only needs to run once after ingesting scripture, or if you want to refresh embeddings. This can take a while (30-60 min for full Bible) — runs in background and reports progress.
Output schemas not documented. Tools like recall, search_scripture, and study_history accept limit/pagination params but no return type is visible. Without documented output schemas, LLMs cannot plan downstream tool calls or extract expected fields.
No error handling or recovery guidance. Tool descriptions lack recovery patterns, validation feedback, or retryable vs. fatal error classification. For example, search_scripture gives no guidance on what happens if a book abbreviation is invalid, or how the LLM should handle zero results.
Conditional parameter dependencies not clearly documented. reading_plan tool has action='create' requiring name/description/readings, but this relationship is not explicit in parameter descriptions. Undocumented conditionals cause LLMs to pass incomplete or invalid payloads.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 51 | - | v1 |
Read a specific scripture passage by reference (book, chapter, verse). Retrieves the full text from the KJV Bible. Use this when the user wants to read a specific passage they already know about. Accepts formats like "ROM.8.28", "PSA.23", "1JHN.4.7-9" (verse ranges).
Create or retrieve a reading plan (e.g. Read the Bible in a Year, Old Testament Survey, Gospels Study). Tracks current position and daily/weekly readings. Use this to guide structured scripture study with preset chapters to read each day.
Semantic search across your personal study notes, prayers, insights, and knowledge graph. Finds entries by meaning, not just keywords. Use this BEFORE starting a new study topic to check what the user has already explored — this shows continuity and care. Great for: "Have I studied this before?", "What did I note about grace?", "Find my prayers about patience". If results are found, weave them naturally into the conversation: "Last time you studied this, you noted that..." — never just dump a list. If no results, that is fine — it means this is fresh territory.
Store a study note, prayer, insight, question, cross-reference, memory verse, or any other type in the personal knowledge graph. IMPORTANT: For scripture-related entries, always set the context field to the passage reference (e.g. "ROM.8.28" or "PSA.23") — this links the note to that passage so study_passage can surface it later. Available study types: study_note (📝 reflections on passages), prayer (🙏 prayer journal — treat reverently), teaching (📖 sermon or group study notes), cross_ref (🔗 connections between passages), question (❓ things to explore further), memory_verse (⭐ use metadata.status: learning/reviewing/memorized). After saving, consider suggesting a connection to related notes via the connect tool. Use connect_to parameter to link immediately if there is an obvious relationship.
Search the complete KJV Bible by keyword or semantic meaning. Returns passages with context. Use this to find scripture passages related to a topic, theme, or keyword the user is interested in. Results include book/chapter/verse reference and the full text. Semantic search finds passages by meaning ("What does the Bible say about patience?"), not just keywords.
Retrieve the user's recent study activity and history. Shows what passages they've read, notes they've saved, prayers they've journaled, and insights they've recorded. Use this at the start of conversations to understand their study journey and build on what they've been exploring. Shows continuity and remembers where they left off.
Deep study of a specific passage with linked notes, prayers, and related passages. Shows the verse, any previous study notes (via remember) connected to it, and allows reflection. Use this when diving deeper into a passage the user wants to explore thoroughly. Returns the passage text plus any study history/notes saved about it.
Reference format constraints are vague. Tools like read_scripture and cross_ref accept reference strings ('ROM.8.28', 'PSA.23', 'MAT.5.3-12') but no formal format constraint (regex, examples of invalid inputs) is provided. This invites hallucinated formats (e.g., 'Romans 8:28' or 'ROM 8.28').
No return value documentation for remember tool. When a note is saved, what ID is assigned? Is it deterministic or random? How does the LLM obtain the node_id to pass to connect or study_history? This ambiguity forces the agent to guess or parse responses.
Destructive tool (forget) lacks confirmation or dry-run support. The description says 'Cannot be undone' but offers no pattern to prevent accidental deletion. Consider adding a confirmation_required or dry_run parameter.
re_embed_scriptures tool has no timeout or progress reporting mechanism documented. The description mentions '30-60 min' and 'runs in background' but provides no polling mechanism, status endpoint, or way for the LLM to know when embedding is complete. This risks the agent hanging or timing out.