{ "schema_version": "1.0", "id": "obsidian-rag", "name": "obsidian-rag", "version": "0.1.0", "description": "Semantic search through Obsidian vault notes using RAG. Powers natural language queries like 'How was my mental health in 2024?' across journal entries, financial records, health data, and more.", "author": "Santhosh Janardhanan", "openclaw": "^2026.4.9", "main": "dist/index.js", "configSchema": { "type": "object", "additionalProperties": false, "properties": { "vault_path": { "type": "string", "description": "Path to Obsidian vault" }, "embedding": { "type": "object", "additionalProperties": false, "properties": { "provider": { "type": "string", "enum": ["ollama"] }, "model": { "type": "string" }, "base_url": { "type": "string", "format": "uri" }, "dimensions": { "type": "integer", "minimum": 1 }, "batch_size": { "type": "integer", "minimum": 1 } } }, "vector_store": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": ["lancedb"] }, "path": { "type": "string" } } }, "indexing": { "type": "object", "additionalProperties": false, "properties": { "chunk_size": { "type": "integer", "minimum": 1 }, "chunk_overlap": { "type": "integer", "minimum": 0 }, "file_patterns": { "type": "array", "items": { "type": "string" } }, "deny_dirs": { "type": "array", "items": { "type": "string" } }, "allow_dirs": { "type": "array", "items": { "type": "string" } } } }, "security": { "type": "object", "additionalProperties": false, "properties": { "require_confirmation_for": { "type": "array", "items": { "type": "string" } }, "sensitive_sections": { "type": "array", "items": { "type": "string" } }, "local_only": { "type": "boolean" } } }, "memory": { "type": "object", "additionalProperties": false, "properties": { "auto_suggest": { "type": "boolean" }, "patterns": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } } } } } }, "tools": [ { "name": "obsidian_rag_search", "description": "Primary semantic search tool. Given a natural language query, searches the Obsidian vault index and returns the most relevant note chunks ranked by semantic similarity. Supports filtering by directory, date range, and tags.", "parameter_schema": { "type": "object", "properties": { "query": { "type": "string", "description": "Natural language question or topic to search for" }, "max_results": { "type": "integer", "description": "Maximum number of chunks to return", "default": 5, "minimum": 1, "maximum": 50 }, "directory_filter": { "type": "array", "description": "Limit search to specific vault subdirectories (e.g. ['Journal', 'Finance'])", "items": { "type": "string" } }, "date_range": { "type": "object", "description": "Filter by date range", "properties": { "from": { "type": "string", "description": "Start date (YYYY-MM-DD)" }, "to": { "type": "string", "description": "End date (YYYY-MM-DD)" } } }, "tags": { "type": "array", "description": "Filter by hashtags found in notes (e.g. ['#mentalhealth', '#therapy'])", "items": { "type": "string" } } }, "required": ["query"] }, "required_permissions": [] }, { "name": "obsidian_rag_index", "description": "Trigger indexing of the Obsidian vault. Use 'full' for first-time setup, 'sync' for incremental updates, 'reindex' to force a clean rebuild.", "parameter_schema": { "type": "object", "properties": { "mode": { "type": "string", "description": "Indexing mode", "enum": ["full", "sync", "reindex"] } }, "required": ["mode"] }, "required_permissions": [] }, { "name": "obsidian_rag_status", "description": "Check the health of the Obsidian RAG plugin — index statistics, last sync time, unindexed files, and Ollama status. Call this first when unsure if the index is ready.", "parameter_schema": { "type": "object", "properties": {} }, "required_permissions": [] }, { "name": "obsidian_rag_memory_store", "description": "Commit an important fact from search results to OpenClaw's memory for faster future retrieval. Use after finding significant information (e.g. 'I owe Sreenivas $50') that should be remembered.", "parameter_schema": { "type": "object", "properties": { "key": { "type": "string", "description": "Identifier for the fact (e.g. 'debt_to_sreenivas')" }, "value": { "type": "string", "description": "The fact to remember" }, "source": { "type": "string", "description": "Source file path in the vault (e.g. 'Journal/2025-03-15.md')" } }, "required": ["key", "value", "source"] }, "required_permissions": [] } ] }