Skip to main content
Glama

analyze_text

Analyze story page text to generate detailed insights and actionable reports for better understanding and decision-making using the UNO-MCP server.

Instructions

Analyzes a story page and generates a report with insights

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesThe story page text to analyze or enhance

Implementation Reference

  • src/index.ts:120-123 (registration)
    Registration of the 'analyze_text' tool in the ListToolsRequestSchema handler, including name, description, and input schema reference.
    name: 'analyze_text', description: 'Analyzes a story page and generates a report with insights', inputSchema: textInputSchema },
  • Input schema definition for the analyze_text tool (textInputSchema).
    const textInputSchema = { type: 'object', properties: { text: { type: 'string', description: 'The story page text to analyze or enhance', } }, required: ['text'] };
  • Handler function for the analyze_text tool. Validates input, calls TextAnalyzer.analyzeText, and formats the MCP response.
    private async handleAnalyzeText(args: any) { if (!args.text || typeof args.text !== 'string') { throw new McpError(ErrorCode.InvalidParams, 'Missing or invalid text parameter'); } const report = await this.analyzer.analyzeText(args.text); return { content: [ { type: 'text', text: report } ] }; }
  • Core analysis logic implementation in TextAnalyzer class. Orchestrates assessment, evaluation, repetition detection, and report generation.
    async analyzeText(text: string): Promise<string> { const wordCount = this.countWords(text); const charCount = text.length; const contextualAssessment = await this.performContextualAssessment(text); const enhancementEvaluation = await this.performEnhancementEvaluation(text); const repetitionPatterns = await this.identifyRepetitionPatterns(text); // Generate a markdown report return this.generateReport(text, wordCount, charCount, contextualAssessment, enhancementEvaluation, repetitionPatterns); }
  • Helper function that generates the final markdown analysis report based on all assessment data.
    generateReport( text: string, wordCount: number, charCount: number, contextualAssessment: any, enhancementEvaluation: any, repetitionPatterns: any ): string { // Calculate target expansion counts const targetWordCount = Math.round(wordCount * 2); const targetCharCount = Math.round(charCount * 2); // Generate the report in markdown format return `# UNO Analysis Report ## Text Statistics - **Original Word Count**: ${wordCount} - **Original Character Count**: ${charCount} - **Target Word Count (200%)**: ${targetWordCount} - **Target Character Count (200%)**: ${targetCharCount} ## Contextual Assessment ### Narrative Position - **Position**: ${contextualAssessment.narrativePosition.position} - **Introduction Markers**: ${contextualAssessment.narrativePosition.isIntroduction ? "Present" : "Absent"} - **Climax Markers**: ${contextualAssessment.narrativePosition.isClimax ? "Present" : "Absent"} - **Resolution Markers**: ${contextualAssessment.narrativePosition.isResolution ? "Present" : "Absent"} ### Character Focus - **Point of View**: ${contextualAssessment.characterFocus.pointOfView} - **Potential Characters**: ${contextualAssessment.characterFocus.potentialCharacters.join(", ") || "None identified"} - **Pronoun Distribution**: - First Person: ${contextualAssessment.characterFocus.pronounDistribution.firstPerson} - Second Person: ${contextualAssessment.characterFocus.pronounDistribution.secondPerson} - Third Person: ${contextualAssessment.characterFocus.pronounDistribution.thirdPerson} ### Scene Type - **Dominant Type**: ${contextualAssessment.sceneType.dominantType} - **Action Elements**: ${contextualAssessment.sceneType.isAction ? "Strong" : "Weak"} - **Dialogue Elements**: ${contextualAssessment.sceneType.isDialogue ? "Strong" : "Weak"} - **Exposition Elements**: ${contextualAssessment.sceneType.isExposition ? "Strong" : "Weak"} ### Mood and Tone - **Dominant Mood**: ${contextualAssessment.moodAndTone.mood} - **Positive Elements**: ${contextualAssessment.moodAndTone.hasPositiveElements ? "Present" : "Absent"} - **Negative Elements**: ${contextualAssessment.moodAndTone.hasNegativeElements ? "Present" : "Absent"} - **Suspense Elements**: ${contextualAssessment.moodAndTone.hasSuspenseElements ? "Present" : "Absent"} ## Enhancement Recommendations ### Golden Shadow Enhancement - **Need Level**: ${enhancementEvaluation.needsGoldenShadow.needLevel} - **Underdeveloped Characters**: ${enhancementEvaluation.needsGoldenShadow.underdevelopedCharacters.join(", ") || "None identified"} - **Underdeveloped Plot Elements**: ${enhancementEvaluation.needsGoldenShadow.hasUnderdevelopedPlotElements ? "Present" : "Absent"} ### Environmental Expansion - **Need Level**: ${enhancementEvaluation.needsEnvironmentalExpansion.needLevel} - **Sensory Richness (0-4)**: ${enhancementEvaluation.needsEnvironmentalExpansion.sensoryRichness} - **Setting Description**: ${enhancementEvaluation.needsEnvironmentalExpansion.hasSettingDescription ? "Present" : "Absent"} - **Areas to Enhance**: - Visual: ${!enhancementEvaluation.needsEnvironmentalExpansion.hasSufficientVisualDescriptions ? "Needs improvement" : "Sufficient"} - Auditory: ${!enhancementEvaluation.needsEnvironmentalExpansion.hasSufficientAuditoryDescriptions ? "Needs improvement" : "Sufficient"} - Tactile: ${!enhancementEvaluation.needsEnvironmentalExpansion.hasSufficientTactileDescriptions ? "Needs improvement" : "Sufficient"} - Olfactory: ${!enhancementEvaluation.needsEnvironmentalExpansion.hasSufficientOlfactoryDescriptions ? "Needs improvement" : "Sufficient"} ### Action Scene Enhancement - **Applicability**: ${enhancementEvaluation.needsActionSceneEnhancement.isActionScene ? "Applicable" : "Not applicable"} ${enhancementEvaluation.needsActionSceneEnhancement.isActionScene ? `- **Need Level**: ${enhancementEvaluation.needsActionSceneEnhancement.needLevel} - **Time Manipulation**: ${enhancementEvaluation.needsActionSceneEnhancement.hasTimeManipulation ? "Present" : "Absent"} - **Sensory Details**: ${enhancementEvaluation.needsActionSceneEnhancement.hasSensoryDetails ? "Present" : "Absent"} - **Environmental Interaction**: ${enhancementEvaluation.needsActionSceneEnhancement.hasEnvironmentalInteraction ? "Present" : "Absent"}` : ""} ### Prose Smoothing - **Need Level**: ${enhancementEvaluation.needsProseSmoothening.needLevel} - **Average Sentence Length**: ${enhancementEvaluation.needsProseSmoothening.averageSentenceLength.toFixed(1)} words - **Sentence Length Variety**: ${(enhancementEvaluation.needsProseSmoothening.sentenceLengthVariety * 100).toFixed(1)}% - **Transition Words**: ${enhancementEvaluation.needsProseSmoothening.hasTransitionWords ? "Present" : "Absent"} - **Paragraph Length Variety**: ${enhancementEvaluation.needsProseSmoothening.hasVariedParagraphLength ? "Present" : "Absent"} ### Repetition Elimination - **Severity**: ${enhancementEvaluation.repetitionSeverity.severity} - **Repeated Word Count**: ${enhancementEvaluation.repetitionSeverity.repeatedWordCount} - **Top Repeated Words**: ${enhancementEvaluation.repetitionSeverity.topRepeatedWords.map((item: {word: string, count: number}) => ` - "${item.word}" (${item.count} times)`).join('\n')} ## Repetition Patterns ### Repeated Words ${repetitionPatterns.repeatedWords.length > 0 ? repetitionPatterns.repeatedWords.map((item: {word: string, count: number}) => `- "${item.word}" (${item.count} times)`).join('\n') : "- No significant word repetition detected"} ### Repeated Phrases ${repetitionPatterns.repeatedPhrases.length > 0 ? repetitionPatterns.repeatedPhrases.map((item: {phrase: string, count: number}) => `- "${item.phrase}" (${item.count} times)`).join('\n') : "- No significant phrase repetition detected"} ### Repeated Sentence Structures ${repetitionPatterns.repeatedSentenceStructures.length > 0 ? repetitionPatterns.repeatedSentenceStructures.map((item: {pattern: string, count: number}) => `- ${item.pattern} pattern (${item.count} times)`).join('\n') : "- No significant sentence structure repetition detected"} `; }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MushroomFleet/UNO-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server