A multi-platform social media automation agent that crawls, analyzes, and performs actions on TikTok/Douyin, Instagram, and LinkedIn using the Agentfy framework with memory, reasoning, perception, and action modules
This MCP server has critical structural deficiencies. Transport mechanism is UNKNOWN (not declared), making it impossible to assess protocol readiness. Tool definitions lack critical components across nearly all tools: (1) NO parameter descriptions for any tools examined, every parameter has 0 explanation of what it controls or accepts; (2) descriptions are present but mostly generic/minimal (10-60 chars, below the 50-200 char baseline for LLM-optimized docs); (3) NO output schemas documented, tools return data but LLMs have no spec of what fields to expect; (4) NO error handling guidance, agents have no recovery path on failure; (5) parameter types are declared in JSON Schema but missing critical constraints (enums for categorical inputs, bounds for numerics, format specs for strings). The server spans 4 social platforms (Douyin, Instagram, LinkedIn, TikTok) with 41 tools total, but tooling quality is severely compromised. Code sample shows a Streamlit UI (run_agent_app.py) wrapping agent modules, but no explicit MCP server registration or transport binding is visible in provided source.
Clean raw Instagram data dynamically based on user's request using ChatGPT and PandasAI.
Clean raw LinkedIn data dynamically based on user's request using ChatGPT and PandasAI.
Comment on a post.
Fetch statistics for one or multiple videos.
Fetch detailed information about multiple videos by their IDs.
Fetch user's fans with pagination.
NO parameter descriptions across all 41 tools. Every parameter (e.g., 'aweme_id', 'username', 'max_pages', 'sec_user_id') lacks explanation of what it controls, what format it expects, or valid ranges. LLMs cannot infer parameter semantics from names alone.
NO output schemas documented. Tools return data but LLMs have no specification of response structure, field names, types, or what chaining fields (IDs, references) are available. Agents cannot reliably compose tools or extract data from responses.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 43 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 48 | - | v1 |
Fetch a user's followers by username with pagination.
Fetch accounts a user is following with pagination.
Fetch users followed by a user with pagination.
Fetch a user's highlights by username.
Fetch user information by username or user_id.
Fetch user information by username, combining results from two endpoints.
Fetch videos liked by a user with pagination.
Fetch videos posted by a user with pagination.
Fetch user posts with pagination.
Fetch user posts and reels with pagination.
Fetch a user's profile information using various identifiers.
Fetch user reels with pagination.
Fetch a user's stories by username.
Fetch posts where a user is tagged with pagination.
Fetch detailed information about a specific video by its ID.
Fetch detailed information about a specific video by its share URL.
Fetch comments on a video with pagination.
Fetch statistics for one video.
Get the connection count for a LinkedIn profile.
Get recommendations given by a LinkedIn profile.
Get comments on a specific LinkedIn post.
Get LinkedIn profile information by profile URL.
Get LinkedIn profile information by username.
Get comments made by a LinkedIn profile.
Get combined profile data, connection count, and posts.
Get posts liked list by a LinkedIn profile.
Get posts from a LinkedIn profile.
Get the time of a user's most recent activity.
Get recommendations received by a LinkedIn profile.
Get profiles similar to a given LinkedIn profile.
Attempt to find an email address associated with a LinkedIn profile.
Post an image to Instagram.
Search for LinkedIn profiles using a LinkedIn search URL.
Search for LinkedIn profiles with detailed filtering options.
Send a direct message.
Pagination parameters (max_pages, count, start) have no constraints documented. LLMs can pass arbitrary values: max_pages=999999, count=10000. No per-tool limit guidance, no indication of server limits or recommended defaults.
Ambiguous parameter naming: 'identifier' used in multiple tools (fetch_user_info, fetch_user_reels, fetch_user_posts_and_reels) with different meanings (username, user_id, profile URL). LLMs conflate these. No enum or clear type suffix to distinguish.
Tool 'fetch_user_posts_and_reels' and 'get_profile_data_connection_count_posts' combine multiple responsibilities in one tool. Should split into separate, composable tools so agents can request only what they need.
NO error handling guidance. Agents have no recovery path if a tool fails. No indication of retryable vs. permanent errors, no suggestions for what to do if a user/video/profile is not found, no rate-limit or auth failure guidance.
Tool descriptions are generic and minimal (10-60 chars). Example: 'Fetch user information by username or user_id' (45 chars). No WHEN to use, no distinction from similar tools, no prerequisites. Baseline for LLM-optimized descriptions is 50-200 chars.
Destructive tools (post_image, comment_on_post, send_direct_message) lack confirmation/dry-run patterns. Agents can post, comment, or message without a validation step, risking accidental publication.
Transport mechanism UNKNOWN. No explicit HTTP, STDIO, or SSE binding declared. Code sample shows Streamlit UI but no MCP server registration visible. Protocol readiness cannot be assessed.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot determine which tools are safe to retry, which modify state, which are read-only without parsing descriptions.