turbovault_tools/
lib.rs

1//! # MCP Tools
2//!
3//! Tools implementation using turbomcp macros and vault manager integration.
4//! Designed for LLM vault management with holistic workflows.
5//!
6//! ## Overview
7//!
8//! This crate provides the main MCP (Model Context Protocol) tool implementations
9//! that enable AI agents to interact with Obsidian vaults. Tools are organized by
10//! domain and include file operations, graph analysis, search, validation, and more.
11//!
12//! ## Core Tool Categories
13//!
14//! ### File Tools
15//!
16//! [`file_tools::FileTools`] - Direct file operations:
17//! - Read file content
18//! - Write/create files
19//! - Delete files
20//! - List vault files and directories
21//! - Get file metadata
22//!
23//! ### Graph Tools
24//!
25//! [`graph_tools::GraphTools`] - Link analysis and relationships:
26//! - Build vault link graph
27//! - Find backlinks to a note
28//! - Discover related notes
29//! - Detect orphaned notes
30//! - Analyze vault health
31//! - Find broken links
32//!
33//! ### Search Tools
34//!
35//! [`search_tools::SearchTools`] - Full-text search capabilities:
36//! - Search vault content
37//! - Search file names
38//! - Advanced query syntax
39//! - Result ranking and filtering
40//!
41//! ### Analysis Tools
42//!
43//! [`analysis_tools::AnalysisTools`] - Vault analysis:
44//! - Compute vault statistics
45//! - Generate health reports
46//! - Identify improvement areas
47//! - Create recommendations
48//!
49//! ### Batch Tools
50//!
51//! [`batch_tools::BatchTools`] - Atomic operations:
52//! - Execute multi-file operations
53//! - Atomic transactions
54//! - Conflict detection
55//! - Result tracking
56//!
57//! ### Metadata Tools
58//!
59//! [`metadata_tools::MetadataTools`] - Note metadata:
60//! - Read frontmatter
61//! - Parse tags
62//! - Extract headers
63//! - Get file properties
64//!
65//! ### Validation Tools
66//!
67//! [`validation_tools::ValidationTools`] - Content validation:
68//! - Validate frontmatter format
69//! - Check link validity
70//! - Verify content structure
71//! - Report issues
72//!
73//! ### Export Tools
74//!
75//! [`export_tools::ExportTools`] - Data export:
76//! - Export health reports
77//! - Export vault statistics
78//! - Export analysis results
79//! - Support JSON and CSV formats
80//!
81//! ### Relationship Tools
82//!
83//! [`relationship_tools::RelationshipTools`] - Note relationships:
84//! - Find note connections
85//! - Build relationship maps
86//! - Analyze link patterns
87//!
88//! ### Template Tools
89//!
90//! [`templates::TemplateEngine`] - Template management:
91//! - Define templates
92//! - Render templates
93//! - Template validation
94//!
95//! ### Vault Lifecycle
96//!
97//! [`vault_lifecycle::VaultLifecycleTools`] - Vault management:
98//! - Initialize vaults
99//! - Backup operations
100//! - Migration utilities
101//!
102//! ## Key Types
103//!
104//! - [`VaultStats`] - Vault statistics data
105//! - [`HealthInfo`] - Vault health metrics
106//! - [`BrokenLinkInfo`] - Broken link information
107//! - [`SearchResultInfo`] - Search result details
108//! - [`SearchQuery`] - Search query specification
109//! - [`ValidationReportInfo`] - Validation issue report
110//! - [`TemplateDefinition`] - Template specification
111//!
112//! ## Utilities
113//!
114//! ### Output Formatting
115//!
116//! [`output_formatter::ResponseFormatter`] - Format tool responses:
117//! - JSON output
118//! - Plain text output
119//! - Table formatting
120//! - Customizable formatting
121//!
122//! ### Response Utilities
123//!
124//! [`response_utils`] - Helper functions for response formatting
125//!
126//! ### Search Engine
127//!
128//! [`search_engine::SearchEngine`] - Tantivy-based full-text search:
129//! - Index vault content
130//! - Execute search queries
131//! - Rank results
132//!
133//! ## Integration with Vault Manager
134//!
135//! All tools integrate with [`turbovault_vault::VaultManager`] for:
136//! - File access and modification
137//! - Error handling and validation
138//! - Thread-safe operations
139//! - Atomic transactions
140//!
141//! ## Example Usage
142//!
143//! ```no_run
144//! use turbovault_core::Result;
145//!
146//! #[tokio::main]
147//! async fn main() -> Result<()> {
148//!     // Initialize tools (typically done by MCP server)
149//!     // let tools = initialize_tools(&vault_path).await?;
150//!
151//!     // Tools are typically called by the MCP server framework
152//!     // Example: FileTools::read_file(path).await?
153//!
154//!     Ok(())
155//! }
156//! ```
157//!
158//! ## Error Handling
159//!
160//! All tools return [`turbovault_core::Result<T>`]:
161//! - File not found
162//! - Permission denied
163//! - Parse errors
164//! - Invalid input
165//! - Vault errors
166//!
167//! See [`turbovault_core::error`] for error types.
168
169pub mod analysis_tools;
170pub mod batch_tools;
171pub mod export_tools;
172pub mod file_tools;
173pub mod graph_tools;
174pub mod metadata_tools;
175pub mod output_formatter;
176pub mod relationship_tools;
177pub mod response_utils;
178pub mod search_engine;
179pub mod search_tools;
180pub mod templates;
181pub mod validation_tools;
182pub mod vault_lifecycle;
183
184pub use analysis_tools::{AnalysisTools, VaultStats};
185pub use batch_tools::BatchTools;
186pub use export_tools::ExportTools;
187pub use file_tools::FileTools;
188pub use graph_tools::{BrokenLinkInfo, GraphTools, HealthInfo};
189pub use metadata_tools::MetadataTools;
190pub use output_formatter::{OutputFormat, ResponseFormatter};
191pub use relationship_tools::RelationshipTools;
192pub use search_engine::{SearchEngine, SearchQuery, SearchResultInfo};
193pub use search_tools::SearchTools;
194pub use templates::{TemplateDefinition, TemplateEngine, TemplateFieldType};
195pub use turbovault_batch::{BatchOperation, BatchResult};
196pub use turbovault_core::prelude::*;
197pub use validation_tools::{ValidationReportInfo, ValidationTools};
198pub use vault_lifecycle::VaultLifecycleTools;