MCP server for Instagram/Facebook/YouTube comment collection, classification, and human-in-the-loop reply automation with grounding guards
Server has 4 tools with schemas and descriptions, but quality is inconsistent. Tool names lack clear verb-noun structure (e.g., 'collect_and_classify' violates single-responsibility principle). Descriptions are present but lack actionable detail for LLM selection. Parameter schemas exist but lack descriptions for most fields. No output schemas documented. Error handling is minimal, no recovery guidance or categorization. The 'collect_and_classify' tool combines multiple concerns (collect, classify, draft, optionally write), violating composition patterns. Risk annotations (READ_ONLY, WRITE, IRREVERSIBLE) are present but not formalized in schema.
Full comment run: collect, classify (praise/question/rules/troll/other) and draft replies (<150 chars, channel voice). Optionally writes the human review queue. Takes a few minutes.
Pull unanswered comments from the configured Instagram account, Facebook page's recent reels, and YouTube channel — raw, no classification. Fast. YouTube only runs if YOUTUBE_ENV is set up (youtube_auth_setup.py); otherwise it's skipped without error.
Publish exactly the queue rows a human has set to ✅ (human-in-the-loop stays intact). Use dry_run first to preview.
State of the review queue: open (⬜), approved (✅), published (📤), skipped (❌).
Tool 'collect_and_classify' violates single-responsibility principle by combining collection, classification, grounding, drafting, and optional queue writing. Should split into separate tools: collect_comments → classify_comments → draft_replies → write_queue.
Parameter descriptions missing for 'platforms' and 'media_window' in fetch_comments; 'write_queue' in collect_and_classify. LLMs cannot infer parameter meaning from names alone. All parameters require explicit descriptions.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., comment IDs, classification results, queue status structure). Every tool must document return type and fields.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Error handling is absent. No recovery guidance, categorization (retryable vs fatal), or actionable error messages. E.g., if YouTube auth fails, the tool silently skips, LLM has no signal to retry or inform user.
Tool 'post_approved' is irreversible (publishes comments) but lacks confirmation/dry-run enforcement in schema. dry_run parameter exists but is optional and defaults to true, LLM could accidentally publish by passing dry_run=false without explicit confirmation.