Educational content search server with role-based access control (RBAC), semantic search via Qdrant vector database, and OAuth 2.1 authentication via Scalekit. Designed for HTL Leonding diploma thesis project.
Server has 3 tools with clear naming (verb_noun pattern) and role-based access control design. Descriptions are present and contextual (100-150 chars), exceeding the 10-char minimum. Input schemas are visible with type definitions and defaults. However, output schemas are not documented in the source code provided, parameter descriptions lack constraint details (e.g., 'limit 1-20' is mentioned but not in schema), and error handling guidance is minimal. The health_check tool is trivial (no parameters, minimal value). No evidence of pagination support, result limits enforcement, or recovery guidance in error responses.
Check server health and connectivity. Returns basic server information and status.
Search educational content with STUDENT access level. Provides semantic search with role-based filtering. Students can only access public content and student-level educational materials, not teacher-internal documents or exam solutions.
Search educational content with TEACHER access level. Provides full access to all content including teacher-internal documents, administrative content, and exam solutions. Implements role-based access control at the tool level.
Output schemas not documented. Code shows results are formatted as strings, but LLMs need structured field definitions to extract data for downstream tool calls. Missing: return type, field names, pagination metadata.
Parameter constraints (limit 1-20, query length) are mentioned in descriptions but not enforced in JSON Schema. LLMs cannot read prose constraints reliably, must use enum, minimum, maximum, pattern fields.
No error handling guidance. Code catches ToolError but responses do not tell LLM what to do next (retry, ask user, try different query). Missing: error classification, recovery hints, actionable messages.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
health_check description is too short (18 chars: 'Check server health and connectivity'). Lacks context for when/why to call it. Does not explain what 'basic server information' includes or what status values mean.
No pagination support visible. search_content_student/teacher accept 'limit' but no offset/cursor or total_count in response. Large result sets will blow context window. Pattern: paginated-result requires limit + offset/cursor + total.