Sovereign Swedish RAG server with embedded query expansion middleware
Server has 5 tools with basic descriptions and input schemas visible in code. However, critical gaps undermine quality: (1) No output schemas documented anywhere, LLMs cannot predict return structure or chain tools; (2) Parameter descriptions are minimal (e.g., 'Collection name to ingest documents into' lacks format/constraint details); (3) No error handling guidance, tools fail silently without recovery hints; (4) Missing parameter validation rules (e.g., file_paths array size limits, top_k bounds); (5) No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Naming is acceptable (verb_noun pattern), but descriptions average ~80 chars, below the 194-char baseline for A+ tools. Per-tool scores range 35 - 50, dragging the average down.
Delete a collection and all its documents from the database
Get statistics about a collection including document count and token usage
Ingest documents into a collection with chunking, tokenization, and embedding
List all available collections in the RAG database
Search for relevant documents in a collection using query expansion and reranking
No output schemas documented. LLMs cannot predict return structure (fields, types, pagination) or chain tools. E.g., search() returns what? Array of documents? Scores? Metadata?
delete_collection lacks confirmation/dry-run pattern. Destructive operations should support a confirmation step to prevent accidental data loss.
No error handling guidance. Tools fail without telling LLM what to do next (retry? ask user? fatal?). E.g., ingest_documents with invalid file_path returns nothing actionable.
Parameter constraints missing. top_k has no bounds (could be 0, -1, 1000000). file_paths array size uncapped. Descriptions lack format/range details.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | <=2025-11-25 | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Risk levels are declared in metadata but not exposed to LLM via schema.