Multi-modal knowledge library with vector and full-text search for text, code, images, and PDFs. A personal knowledge library for AI agents to store, search, and retrieve any text, documents, notes, and information.
Librarian demonstrates solid definition quality with 8 well-named tools covering a coherent domain (library management). All tools have descriptions (range 60-250 chars, within baseline 34-392) and documented input parameters with types. Schemas are present and mostly complete. However, there are notable gaps: output schemas are not documented (tools describe what they return informally but provide no structured schema), error handling lacks recovery guidance, and parameter descriptions could be more prescriptive about constraints and valid ranges. Tool naming is verb-forward and clear (Index*, Search, Add, Update, Read, Remove, Get, Suggest). The server uses proper enum constraints (e.g., timeframe, mode, view enums). No security issues detected (no secrets in parameters). The main friction point is the absence of explicit output schema documentation and incomplete error guidance, which would prevent an A grade.
Store a document (note, text, code, or other content) in the library. The library will automatically assign a location in the directory structure based on the content. You can optionally specify where to store it or let the library suggest a location using semantic search.
Get an overview of the library structure, contents, and statistics. Returns information about indexed documents, directory structure, and embedding statistics. You can request different views: - 'sections': hierarchical view of document organization - 'stats': aggregate statistics (document count, chunk count, etc.) - 'tree': full filesystem tree of the library
Add all documents from a directory to the agent's library. Use this to bulk-import text files, notes, documentation, or any content into the library for later search and retrieval. The library persists across sessions, so content added here will be available in future conversations. Recursively indexes all supported file types. Files that haven't changed since last indexing are automatically skipped.
Read a document from the library by path. Returns the full content of the document along with metadata such as creation time, last modified time, and title.
Delete a document from the library and optionally from disk. Removes the document from the search index. You can choose whether to also delete the file from disk, or just remove it from indexing.
Output schemas are not documented. Tool descriptions mention what they return informally (e.g., 'Returns the full content of the document along with metadata'), but there is no explicit JSON Schema defining the structure, field names, and types of responses. This forces LLMs to infer output structure, increasing hallucination risk and breaking downstream tool composition.
Error handling lacks recovery guidance. Tools describe operations but provide no explicit error categorization (retryable vs. user-fixable vs. fatal) or recovery hints. For example, Librarian_SearchLibrary does not document what happens if the query is empty or malformed, or what the agent should do next.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | <=2025-11-25 | v2 |
Search the library using vector embeddings, full-text search, or hybrid mode. Supports semantic search (finds conceptually related content), keyword search (exact term matching), and hybrid search (combines both). You can optionally filter by: - Timeframe: today, this week, last 7 days, last month, or a specific date range - Mode: semantic (default), keyword, or hybrid - Limit: max number of results (default 10)
Suggest where in the library to store a new document. Uses semantic search and directory structure analysis to recommend the best location for a document based on its title and content. Returns ranked suggestions with confidence scores.
Update the content of an existing document in the library. Searches for the document by title or path and replaces its content. The document is automatically re-indexed with new embeddings.
Parameter constraints are loosely specified. Librarian_IndexDirectoryToLibrary accepts 'directory' as a string with description 'Absolute path to directory'. No validation hints provided (does it accept relative paths? symbolic links? non-existent paths?).
Date parameter formats are not formally constrained. Librarian_SearchLibrary accepts 'start_date' and 'end_date' as strings with description 'Optional start date (YYYY-MM-DD)'. The description includes a format example but lacks a JSON Schema pattern or regex. LLMs frequently miscalculate date formats; formal constraints (pattern: '^\d{4}-\d{2}-\d{2}$') would prevent invalid submissions.
No confirmation/dry-run pattern for destructive operations. Librarian_RemoveFromLibrary is marked DESTRUCTIVE (can delete files from disk with delete_file=true), but there is no confirmation step or dry-run preview. Per pattern:confirmation-request, irreversible operations should support a confirmation mechanism to prevent accidental data loss.