MCP 服务器

socialclaw

io.github.ndesv21/socialclaw
营销与广告 社交媒体 公开且可连接 MCP 2026-07-28

此 MCP 可以做什么

Connects social accounts to schedule, publish, moderate, and analyze content across platforms including Instagram, LinkedIn, TikTok, YouTube, and Reddit.

account_capabilities
Get publish capabilities and provider rules for connected accounts: what media is allowed, text limits, and whether publishing is currently possible. Pass accountId for one account, or provider to filter, or neither for all.
输入模式
{'type': 'object', 'properties': {'provider': {'type': 'string', 'description': 'Optional provider filter.'}, 'accountId': {'type': 'string', 'description': 'Optional account id.'}}}
apply_schedule
Create a publishing run from a schedule document. Posts are scheduled or published through connected accounts. Send an idempotencyKey so retries do not create duplicate runs.
输入模式
{'type': 'object', 'required': ['schedule'], 'properties': {'schedule': {'type': 'object', 'description': 'SocialClaw schedule document. Minimal shape: { timezone, posts: [{ account, name, description, publish_at, media_link? }] }. Campaign documents use { timezone, campaigns: [...] }. Per-post provider settings go in settings, e.g. TikTok inbox mode: settings: { tiktokPostMode: "draft" } sends the media to TikTok\'s inbox notification flow instead of publishing, and the creator finishes the post inside the TikTok app.', 'additionalProperties': True}, 'idempotencyKey': {'type': 'string', 'description': 'Stable key to deduplicate retries.'}}}
cancel_post
Cancel a scheduled post before it publishes.
输入模式
{'type': 'object', 'required': ['postId'], 'properties': {'postId': {'type': 'string'}}}
connect_account
Start connecting a new social account. For OAuth providers this returns an authorizeUrl the user must open in a browser. Telegram requires botToken and chatId; Discord requires webhookUrl.
输入模式
{'type': 'object', 'required': ['provider'], 'properties': {'chatId': {'type': 'string', 'description': 'Telegram chat target, e.g. @yourchannel (telegram only).'}, 'botToken': {'type': 'string', 'description': 'Telegram bot token (telegram only).'}, 'provider': {'type': 'string', 'description': 'Provider to connect.'}, 'webhookUrl': {'type': 'string', 'description': 'Discord channel webhook URL (discord only).'}}}
delete_instagram_comment
Permanently delete an Instagram comment on the user's media. Prefer hide_instagram_comment when unsure.
输入模式
{'type': 'object', 'required': ['account', 'commentId'], 'properties': {'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}, 'commentId': {'type': 'string'}}}
get_analytics
Get analytics snapshots for a post, an account, or a run. scope must be post, account, or run; id is the matching identifier.
输入模式
{'type': 'object', 'required': ['scope', 'id'], 'properties': {'id': {'type': 'string'}, 'scope': {'enum': ['post', 'account', 'run'], 'type': 'string'}, 'window': {'type': 'string', 'description': 'Optional analytics window, e.g. 7d.'}}}
get_instagram_account_insights
Get an Instagram account's insight trend (a daily time series, e.g. reach) over the last N days.
输入模式
{'type': 'object', 'required': ['account'], 'properties': {'days': {'type': 'number', 'description': 'Window in days (2-30, default 14).'}, 'metric': {'type': 'string', 'description': 'Account metric, default reach (e.g. reach, profile_views, accounts_engaged).'}, 'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}}}
get_instagram_comments
Read the comments (and replies) on an Instagram post. Use list_instagram_media first to get a mediaId.
输入模式
{'type': 'object', 'required': ['account', 'mediaId'], 'properties': {'after': {'type': 'string', 'description': 'Pagination cursor from a previous response.'}, 'limit': {'type': 'number', 'description': 'Max comments to return (default 25, capped at 100).'}, 'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}, 'mediaId': {'type': 'string', 'description': 'The IG media id from list_instagram_media.'}}}
get_instagram_media_insights
Get analytics for one Instagram post (reach, likes, comments, saved, shares, views). Use list_instagram_media for the mediaId.
输入模式
{'type': 'object', 'required': ['account', 'mediaId'], 'properties': {'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}, 'mediaId': {'type': 'string'}, 'mediaProductType': {'type': 'string', 'description': 'Optional: FEED, REELS, or STORY â\x80\x94 refines which metrics are requested.'}}}
get_instagram_messages
Read the messages in an Instagram direct-message conversation.
输入模式
{'type': 'object', 'required': ['account', 'conversationId'], 'properties': {'after': {'type': 'string', 'description': 'Pagination cursor from a previous response.'}, 'limit': {'type': 'number', 'description': 'Max messages (default 25, capped at 100).'}, 'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}, 'conversationId': {'type': 'string', 'description': 'Conversation id from list_instagram_conversations.'}}}
get_instagram_profile
Get an Instagram account's profile stats: followers, follows, media count, bio.
输入模式
{'type': 'object', 'required': ['account'], 'properties': {'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}}}
get_post
Get one post including its delivery state and provider identifiers.
输入模式
{'type': 'object', 'required': ['postId'], 'properties': {'postId': {'type': 'string'}}}
hide_instagram_comment
Hide or unhide an Instagram comment on the user's media. Set hidden=false to unhide.
输入模式
{'type': 'object', 'required': ['account', 'commentId'], 'properties': {'hidden': {'type': 'boolean', 'description': 'true to hide (default), false to unhide.'}, 'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}, 'commentId': {'type': 'string'}}}
list_accounts
List connected social accounts in the SocialClaw workspace. Optionally filter by provider (x, facebook, instagram_business, instagram, threads, linkedin, linkedin_page, pinterest, tiktok, telegram, discord, youtube, reddit, wordpress).
输入模式
{'type': 'object', 'properties': {'provider': {'type': 'string', 'description': 'Optional provider filter.'}}}
list_assets
List media (images/videos) the user has uploaded to their SocialClaw library, newest first. Each asset includes a publicUrl usable directly as media_link in validate_schedule/apply_schedule. Use this to find a previously uploaded file (e.g. from the dashboard) to post. Optionally filter by kind (image/video), mime, or a text query over filename/id.
输入模式
{'type': 'object', 'properties': {'kind': {'enum': ['image', 'video'], 'type': 'string', 'description': 'Filter by media kind: image or video.'}, 'mime': {'type': 'string', 'description': 'Optional mime prefix filter, e.g. video/mp4.'}, 'sort': {'enum': ['created_desc', 'created_asc'], 'type': 'string', 'description': 'created_desc (default, newest first) or created_asc.'}, 'limit': {'type': 'number', 'description': 'Maximum assets to return. Defaults to 24, capped at 48.'}, 'query': {'type': 'string', 'description': 'Optional text match over filename, id, kind, mime, or url.'}}}
list_instagram_conversations
List the Instagram direct-message conversations for an account, most recent first. Each conversation includes `counterpart` (the other person's {id, username}) — use its id as the recipientId when replying; `participants` also lists the account itself.
输入模式
{'type': 'object', 'required': ['account'], 'properties': {'after': {'type': 'string', 'description': 'Pagination cursor from a previous response.'}, 'limit': {'type': 'number', 'description': 'Max conversations (default 25, capped at 100).'}, 'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}}}
list_instagram_media
List an Instagram account's recent posts (caption, permalink, timestamp, comment count) so you can find one to read or moderate comments on. account is the connected-account id or handle.
输入模式
{'type': 'object', 'required': ['account'], 'properties': {'after': {'type': 'string', 'description': 'Pagination cursor from a previous response.'}, 'limit': {'type': 'number', 'description': 'Max media to return (default 25, capped at 100).'}, 'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}}}
list_instagram_mentions
List recent @mentions of the workspace's Instagram accounts (captured from Instagram mention webhooks).
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max mentions (default 30, capped at 100).'}}}
list_posts
List posts in the workspace with optional filters.
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Maximum posts to return. Defaults to 20 and is capped at 50.'}, 'runId': {'type': 'string'}, 'offset': {'type': 'number', 'description': 'Offset for paging through results.'}, 'status': {'type': 'string', 'description': 'e.g. scheduled, published, action_required, failed, canceled.'}, 'account': {'type': 'string', 'description': 'Account handle filter.'}, 'provider': {'type': 'string'}, 'campaignId': {'type': 'string'}}}
post_attempts
List publish attempts for a post, including provider errors. Use this to debug failed posts.
输入模式
{'type': 'object', 'required': ['postId'], 'properties': {'postId': {'type': 'string'}}}
preview_campaign
Preview how a campaign schedule document expands into concrete posts and steps without creating anything.
输入模式
{'type': 'object', 'required': ['schedule'], 'properties': {'schedule': {'type': 'object', 'description': 'SocialClaw schedule document. Minimal shape: { timezone, posts: [{ account, name, description, publish_at, media_link? }] }. Campaign documents use { timezone, campaigns: [...] }. Per-post provider settings go in settings, e.g. TikTok inbox mode: settings: { tiktokPostMode: "draft" } sends the media to TikTok\'s inbox notification flow instead of publishing, and the creator finishes the post inside the TikTok app.', 'additionalProperties': True}}}
publish_draft
Publish a previously created draft run, optionally at a given ISO-8601 start time.
输入模式
{'type': 'object', 'required': ['runId'], 'properties': {'runId': {'type': 'string', 'description': 'Draft run id.'}, 'startAt': {'type': 'string', 'description': 'Optional ISO-8601 publish start time.'}}}
react_instagram_message
React to a received Instagram direct message (e.g. love).
输入模式
{'type': 'object', 'required': ['account', 'conversationId', 'messageId', 'recipientId'], 'properties': {'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}, 'reaction': {'type': 'string', 'description': 'Reaction name, default love.'}, 'messageId': {'type': 'string'}, 'recipientId': {'type': 'string', 'description': "The other participant's Instagram-scoped user id (IGSID)."}, 'conversationId': {'type': 'string'}}}
refresh_analytics
Fetch fresh analytics for a published post from the provider and store a new snapshot, then return it. Supported providers: Instagram, TikTok, YouTube, Reddit, X, Pinterest, Snapchat (others return an unsupported snapshot). Call this before get_analytics when you need current numbers rather than the last stored snapshot.
输入模式
{'type': 'object', 'required': ['postId'], 'properties': {'postId': {'type': 'string', 'description': 'The published post id to refresh.'}, 'window': {'type': 'string', 'description': 'Optional analytics window, e.g. 7d (default lifetime).'}}}
reply_instagram_comment
Reply to an Instagram comment on the user's media.
输入模式
{'type': 'object', 'required': ['account', 'commentId', 'message'], 'properties': {'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}, 'message': {'type': 'string', 'description': 'The reply text.'}, 'commentId': {'type': 'string'}}}
retry_post
Retry a failed post.
输入模式
{'type': 'object', 'required': ['postId'], 'properties': {'postId': {'type': 'string'}}}
run_status
Get the status summary of a publishing run and its posts.
输入模式
{'type': 'object', 'required': ['runId'], 'properties': {'runId': {'type': 'string'}}}
send_instagram_message
Send an Instagram direct message — a text reply, or an image/video attachment via attachment_url. Only allowed within 24 hours of the recipient's last message unless a message tag (e.g. HUMAN_AGENT) is supplied.
输入模式
{'type': 'object', 'required': ['account', 'conversationId', 'recipientId'], 'properties': {'tag': {'type': 'string', 'description': 'Optional message tag, e.g. HUMAN_AGENT, to reply outside the 24h window.'}, 'text': {'type': 'string', 'description': 'Message body (omit when sending an attachment).'}, 'account': {'type': 'string', 'description': 'Instagram connected-account id or handle.'}, 'recipientId': {'type': 'string', 'description': "The recipient's Instagram-scoped user id (IGSID)."}, 'attachment_url': {'type': 'string', 'description': 'Public URL of an image/video to send as an attachment.'}, 'conversationId': {'type': 'string', 'description': 'Conversation id (for routing/storage).'}, 'attachment_type': {'enum': ['image', 'video', 'audio'], 'type': 'string', 'description': 'Attachment type: image (default), video, or audio.'}}}
upload_asset
Upload media (image or video) to SocialClaw hosted storage. Provide either sourceUrl (a public URL the server downloads) or contentBase64. Returns an asset id and a public URL usable as media_link in schedules.
输入模式
{'type': 'object', 'required': ['filename'], 'properties': {'filename': {'type': 'string', 'description': 'Filename including extension, e.g. launch.png.'}, 'sourceUrl': {'type': 'string', 'description': 'Public URL to download the media from.'}, 'contentBase64': {'type': 'string', 'description': 'Base64-encoded file content (alternative to sourceUrl).'}}}
validate_schedule
Validate a schedule document against provider rules, media limits, account state, and publish times WITHOUT creating any posts. Always run this before apply_schedule.
输入模式
{'type': 'object', 'required': ['schedule'], 'properties': {'schedule': {'type': 'object', 'description': 'SocialClaw schedule document. Minimal shape: { timezone, posts: [{ account, name, description, publish_at, media_link? }] }. Campaign documents use { timezone, campaigns: [...] }. Per-post provider settings go in settings, e.g. TikTok inbox mode: settings: { tiktokPostMode: "draft" } sends the media to TikTok\'s inbox notification flow instead of publishing, and the creator finishes the post inside the TikTok app.', 'additionalProperties': True}}}
workspace_health
Get workspace health, including connection state across providers. Pass provider to check one provider's connections.
输入模式
{'type': 'object', 'properties': {'provider': {'type': 'string', 'description': 'Optional provider to check connection health for.'}}}
workspace_usage
Get workspace usage counters and plan entitlement consumption.
输入模式
{'type': 'object', 'properties': {}}
已添加
workspace_health
2026年9月17日 12:45
已添加
workspace_usage
2026年9月17日 12:45
已添加
send_instagram_message
2026年9月17日 12:45
已添加
get_instagram_messages
2026年9月17日 12:45
已添加
list_instagram_conversations
2026年9月17日 12:45
已添加
list_instagram_mentions
2026年9月17日 12:45
已添加
react_instagram_message
2026年9月17日 12:45
已添加
get_instagram_account_insights
2026年9月17日 12:45
已添加
get_instagram_profile
2026年9月17日 12:45
已添加
get_instagram_media_insights
2026年9月17日 12:45
已添加
delete_instagram_comment
2026年9月17日 12:45
已添加
hide_instagram_comment
2026年9月17日 12:45
已添加
reply_instagram_comment
2026年9月17日 12:45
已添加
get_instagram_comments
2026年9月17日 12:45
已添加
list_instagram_media
2026年9月17日 12:45
已添加
refresh_analytics
2026年9月17日 12:45
已添加
get_analytics
2026年9月17日 12:45
已添加
run_status
2026年9月17日 12:45
已添加
cancel_post
2026年9月17日 12:45
已添加
retry_post
2026年9月17日 12:45
已添加
post_attempts
2026年9月17日 12:45
已添加
get_post
2026年9月17日 12:45
已添加
list_assets
2026年9月17日 12:45
已添加
list_posts
2026年9月17日 12:45
已添加
publish_draft
2026年9月17日 12:45
已添加
apply_schedule
2026年9月17日 12:45
已添加
preview_campaign
2026年9月17日 12:45
已添加
validate_schedule
2026年9月17日 12:45
已添加
upload_asset
2026年9月17日 12:45
已添加
connect_account
2026年9月17日 12:45