A Spring Boot application for intelligent document analysis, knowledge extraction, and AI-powered learning tools including RAG, summarization, quiz generation, and translation
IntelliStudy has 4 tools with basic schemas but critical gaps. All tools have descriptions (10-50 chars, below the 50-200 char baseline for LLM optimization). Input schemas are present but minimal: sessionId and intent parameters lack type constraints, enums, or validation guidance. No output schemas documented. Tool names lack action verbs (RAG_ASK, SUMMARIZE, QUIZ, TRANSLATE are acceptable but not verb_noun style). No error handling guidance, no parameter constraints, no pagination support. The codebase shows Spring Boot + MCP integration but tool definitions are inferred from McpAgentLayer.java rather than explicitly registered with full schemas. This is a proof-of-concept, not production-ready.
Generate a multiple-choice quiz from the document
Answer questions based on the uploaded document context
Summarize the entire uploaded document
Translate text to Bangla
Tool descriptions are under 50 characters and lack LLM-optimized context. 'Answer questions based on the uploaded document context' (50 chars) does not explain WHEN to use RAG_ASK vs SUMMARIZE, what format the answer takes, or how sessionId is obtained.
No output schemas documented. LLMs cannot plan downstream calls or extract structured data. What does RAG_ASK return? A string? An object with confidence scores? Pagination support?
Input parameters lack type constraints and validation guidance. 'intent' parameter has no enum, length limit, or format specification. LLMs will pass arbitrary strings, risking API failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | 2026-07-28+ | v2 |
sessionId parameter is required but no guidance on how to obtain it. Is it returned by an upload tool? A login tool? Agents will not know how to populate this parameter.
Tool names do not follow verb_noun convention. RAG_ASK, SUMMARIZE, QUIZ, TRANSLATE are acceptable but inconsistent with production baselines (get_*, create_*, search_*). TRANSLATE lacks a noun, translate to what language? Ambiguous.