Summary
CLI commands, API endpoints, and MCP tool handlers bypass `KBService` and access `PyriteDB` / `KBRepository` directly. This means hooks don't fire, validation can be skipped, and behavior is inconsistent across interfaces.
Current State (from architecture review)
Fix
Make `KBService` the sole interface for data operations:
1. Add convenience methods to KBService for endpoint queries (`list_titles()`, `resolve_entry()`) 2. CLI commands call KBService instead of instantiating PyriteDB/KBRepository 3. Endpoints call KBService instead of accessing storage directly 4. MCP handlers call KBService instead of accessing storage directly