MCP server for automated social media posting across multiple platforms (Telegram, VK, TenChat) with image generation and content management
Server has 7 tools with visible schemas and descriptions in Russian. Naming follows verb_noun pattern (read_, list_, generate_, create_, publish_, post_, delete_) which is good. However, descriptions are terse (avg ~60 chars, well below the 194-char baseline), lack context on WHEN to use each tool, and omit recovery guidance. Schemas are present but minimal, most parameters lack detailed constraints or format guidance. Error handling returns generic text responses without actionable recovery steps. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Output schemas are undocumented. Composition is reasonable (tools are single-purpose) but parameter descriptions are sparse.
Публикует пост на одну платформу
Удаляет или отменяет пост на платформе
Генерирует изображение по промпту и сохраняет локально
Проверяет, какие платформы настроены и доступны
Проверяет статус опубликованного поста
Публикует на все платформы со статусом "ready"
Читает JSON-файл контента, сгенерированный скиллом ai_news_to_Social_media
Descriptions are too brief (avg 60 chars vs 194-char baseline). Most lack context on WHEN to use the tool, prerequisites, or what it returns. E.g., 'Читает JSON-файл контента' does not explain the expected file format, what happens if the file is missing, or what structure is returned.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. delete_post is DESTRUCTIVE, create_post and publish_all are WRITE operations, but the schema does not declare these hints. LLMs cannot infer safety properties.
Parameter descriptions are sparse or missing. E.g., 'platform' enum is clear, but 'content_file' lacks guidance on file format, location, or what happens if the file does not exist. 'scheduled_at' says 'ISO 8601' but does not explain timezone handling or past-date behavior.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Output schemas are not documented. Tools return text responses via ok()/fail() helpers, but the LLM has no schema for what fields to expect. E.g., does read_content_file return JSON, a summary, or raw file content? This forces LLMs to guess and parse unstructured output.
Error handling is generic. All errors return isError=true with a text message, but do not categorize as retryable/user-fixable/fatal or provide recovery guidance. E.g., if a platform is unavailable, should the LLM retry, try another platform, or ask the user?