A Next.js web application for generating AI-powered, personalized social media biographies in Persian (Farsi) for multiple platforms including Instagram, Twitter, LinkedIn, TikTok, Telegram, and YouTube.
This server exhibits significant definition quality gaps across all three tools. While tool names use action verbs appropriately (generateBio, createChatCompletion, createStructuredOutputBio), the parameter schemas are incomplete or missing type declarations in critical places. Descriptions are present but generic. The server lacks proper error guidance, output schema documentation, and composition patterns. Most critically, this is NOT an MCP server, it is a Next.js HTTP API with POST endpoints. No MCP protocol implementation is evident in the source code provided. The tools appear to be inferred from REST API routes rather than explicitly registered via MCP ServerCapabilities.
Generate a compelling social media bio via OpenAI chat completion API. Takes user context/description and returns a concise (150-200 characters) bio capturing essence, personality, and passion with elements like hashtags or keywords.
Generate personalized social media bio using LangChain with structured output schema. Crafts a bio in Farsi/Persian aligned with user's selected vibe (advanced, normal, joke), weaving together personality, passions, and context. Returns structured output with id and content fields.
Generate a personalized social media bio based on user input, selected platform, and tone preference. Returns a bio optimized for the chosen social media platform (Instagram, Twitter, LinkedIn, TikTok, Telegram, YouTube) with the specified tone (professional, friendly, creative, humorous). Input sanitization prevents prompt injection and token abuse.
Not an MCP Server: Codebase is a Next.js application with HTTP API routes, not an MCP server implementation. No MCP protocol transport (STDIO, HTTP SSE, or Streamable HTTP) is present. No ServerCapabilities, Tool registration, or protocol message handling detected.
Missing Output Schema Documentation: None of the three tools document their return types. generateBio returns {bio: string, model: string}, createChatCompletion returns a string directly, createStructuredOutputBio returns {id, content}, but none of this is documented in the tool definitions. LLMs cannot plan downstream operations without knowing the response structure.
Weak Parameter Descriptions: createChatCompletion accepts only {messages: string} with description 'User-provided context about themselves for bio generation.' This is too generic and fails to explain the expected format, length, or content structure. Does it accept a single message or an array? What is the max length?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 39 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Incomplete Error Guidance: Error responses in app/api/generate/route.ts return 400/429/500 codes with messages in Persian, but do not guide the LLM on recovery. 'لطفاً تمام فیلدهای مورد نیاز را پر کنید' (fill all required fields) does not tell an LLM what to do next or which field is missing.
No Tool Composition Pattern: The three tools are independent and do not reference each other's outputs. There is no guidance on when to use generateBio vs createChatCompletion vs createStructuredOutputBio. All three generate bios but with different backends (LLM provider, OpenAI, LangChain). The LLM cannot reason about which to call.
Parameter Type Ambiguity: generateBio accepts 'language' as a string with no enum constraint. The description says 'Persian/Farsi is the primary language' but does not list valid values. LLMs may pass 'persian', 'farsi', 'fa', 'fa-IR', 'Persian', all variants will fail or be rejected.
Rate Limiting Not Documented: app/api/generate/route.ts calls rateLimitByIp() and can return 429 errors, but the tool definition does not mention rate limits. An LLM will not know to back off and retry after a 429, nor does the error message provide a Retry-After hint.