Text/NLP analysis REST API & MCP server — fully algorithmic, no external AI
8 tools with complete schemas and descriptions, but descriptions are generic and lack LLM-optimized guidance. All tools are READ_ONLY sentiment/NLP analyzers with minimal parameter variation. Naming follows verb_noun convention (analyze_*, extract_*, detect_*). No parameter descriptions beyond the input text field. No output schemas documented. Error handling is basic (generic 'Error: {message}'). Missing dependency hints, constraints, and recovery guidance that would help LLMs select and chain tools effectively.
Run all analyses at once: sentiment, readability, keywords, language detection, stats, profanity, and summary.
Calculate readability scores: Flesch-Kincaid Grade, Flesch Reading Ease, Coleman-Liau Index, Automated Readability Index.
Analyze sentiment of text. Returns score, label (positive/negative/neutral), confidence, and matched words.
Get text statistics: word/sentence/paragraph counts, avg lengths, reading time, speaking time.
Detect the language of text. Supports EN, KO, JA, ZH, ES, FR, DE.
Check text for profanity. Returns whether profanity was found and which words.
No output schemas documented. LLMs cannot predict return structure (fields, types, nesting) for any tool. Forces LLMs to guess what fields exist and how to extract data for downstream use.
Optional parameters (maxKeywords, minLength, sentences) lack descriptions and constraints. LLMs cannot determine valid ranges, defaults, or when to use them. E.g., 'maxKeywords' has no min/max bounds or default behavior documented.
Generic error handling returns 'Error: {message}' with no recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal. No actionable next steps provided.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Extract keywords from text using TF-based scoring with stop word removal.
Generate an extractive summary of text by selecting the most important sentences.
Tool descriptions lack context for LLM selection. E.g., 'Analyze sentiment of text' does not explain WHEN to use this vs. other tools, what the output contains, or what 'confidence' means. Descriptions average ~60 chars; baseline is 194 chars for A+ tools.
analyze_all combines 7 analyses into one tool. Violates single-responsibility principle. LLMs cannot compose individual analyses or retry failed sub-operations. Should be removed in favor of agent-driven composition.