Find your files with natural language and ask questions.
Archive-Agent provides 7 well-named READ_ONLY tools with clear verb prefixes (get_*, list_*). Descriptions are present for all tools and are reasonably detailed (average ~100-150 chars), exceeding the critical minimum. All parameters have type declarations and descriptions. However, output schemas are documented only in docstring comments rather than formal JSON Schema declarations, and several parameter descriptions lack actionable constraints (e.g., no guidance on collection name format, no enum for optional fields). Error handling is minimal, tools rely on assertions and will throw unhandled exceptions rather than providing actionable recovery guidance. The codebase demonstrates consistent naming, good composition (tools are single-concern), and appropriate READ_ONLY classification, but lacks the structured error responses and parameter validation that would elevate this to 70+.
Get answer to question using RAG.
Get the list of chunk headers for a specific file. Provides a quick overview of the document's contents structure.
Get the list of available Qdrant collections.
Get the list of changed files.
Get the list of tracked files.
Get the list of included / excluded patterns.
Output schemas are documented only in docstring comments, not formal JSON Schema. The McpServer.py code declares tools via @mcp.tool() decorator but does not register explicit return type schemas with the MCP framework. LLMs cannot extract and validate return structure programmatically.
No parameter validation or error handling. Tools use bare assertions (assert _context is not None) which will raise unhandled exceptions. Error messages like 'Collection does not exist' (in _get_qdrant) lack actionable recovery guidance. No enum constraints on the optional 'collection' parameter, leaving LLMs to guess valid collection names.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 50 | 1.8.1+ | v1 |
Get the list of files relevant to the question.
Parameter descriptions lack actionable constraints. The 'collection' parameter is described as 'Optional Qdrant collection name' but provides no guidance on format, valid values, or what happens if an invalid name is passed. LLMs cannot self-correct invalid inputs.
Output pagination not documented for potentially large result sets. get_search_result returns a dictionary of {file_path: relevance_score} with no limit documented. If there are hundreds of files, the response could exceed context windows. No limit parameter, no offset/cursor support.
Global _context variable. The implementation relies on a module-level _context global variable that is asserted to exist but not validated at request time. This violates stateless request handling (MCP 2026-07-28 spec), each request should be self-contained. Global state invites concurrency bugs and makes the server difficult to test and reason about.