Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Added "get_asset"; changed the definition of "upload_asset" (33 tools before, 34 now)
UploadAdd an image or video to theuseruser'swantsSocialClawtomediapost,library so it can be attached to a post.ProvidePasseitherexactly one of: file (a file the user attached in this chat), sourceUrl (a direct public http(s)URLlinkofto themediaimage or video file, not a web page), orcontentBase64.contentBase64The(smallfilefilesisonly).storedFilesinupthetouser's1SocialClawGBmediaarelibrarysupportedandthroughthefile or sourceUrl. The resultincludesisanthe asset:idwhenandstatusaispublicready,URLusetoitsusepublicUrl as media_link inschedules.validate_schedule/apply_schedule. Large videos may come back with status uploading; then call get_asset with the asset id until status is ready (or failed) before scheduling.
{"properties":{"contentBase64":{"description":"Base64-encoded filecontentcontent.(alternativeSmalltofilessourceUrl).only; prefer file or sourceUrl.","type":"string"},"file":{"description":"A file the user attached in the conversation.","properties":{"download_url":{"description":"Temporary download URL of the attached file.","type":"string"},"file_id":{"description":"Id of the attached file.","type":"string"},"file_name":{"description":"Original name of the attached file, if known.","type":"string"},"mime_type":{"description":"Mime type of the attached file, if known.","type":"string"}},"required":["download_url","file_id"],"type":"object"},"filename":{"description":"FilenameOptional filename including extension, e.g. launch.png. Inferred from the file or URL when omitted.","type":"string"},"sourceUrl":{"description":"PublicDirect public http(s) URL of the image orvideo.video file.","type":"string"}},"required":["filename"],"type":"object"}
Get asset — Get one media asset from the user's SocialClaw library by id, including its status (uploading, ready, or failed), import progress, and publicUrl. Use it after upload_asset returns status uploading, until the asset is ready.
Authorization not required, issuer https://getsocialclaw.com
Authorization not required, issuer https://getsocialclaw.com
Authorization not required, issuer https://getsocialclaw.com
Authorization not required, issuer https://getsocialclaw.com
Added "get_profile"; changed the definition of "account_capabilities", "apply_schedule", "cancel_post" and 29 more (32 tools before, 33 now)
before
—after
Account capabilitiesbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Account capabilities"}before
—Certificate changed, valid to 2026-12-14
Certificate recorded, valid to 2026-10-15
Authorization not required
First tool surface recorded: 32 tools (server version 0.1.15)
Showing the latest 10 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
after
Apply schedulebefore
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Apply schedule"}before
—after
Cancel postbefore
—after
{"destructiveHint":true,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":false,"title":"Cancel post"}before
—after
Connect accountStart connectingaonenewof the user's own socialaccount.accounts to their SocialClaw workspace. ForOAuthmost providers this returns anauthorizeUrlauthorizeUrl; give it to the usermustsoopenthey sign inawithbrowser.the provider themselves (SocialClaw never sees their password). TelegramrequiresandbotTokenDiscord have no sign-in page: Telegram takes the bot token andchatId;chat id of a bot the user created and made admin of their channel, and DiscordrequirestakeswebhookUrl.a webhook URL the user created for their channel. Only pass values the user gave you for this purpose.
{"properties":{"botToken":{"description":"Telegrambotonly: token(telegramofonly).the user's own bot, from @BotFather.","type":"string"},"chatId":{ ⟨17 unchanged words⟩ string"},"webhookUrl":{"description":"Discordchannelonly: webhook URL(discordtheonly).user created in their channel settings.","type":"string"}},"required": ⟨3 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Connect account"}before
—after
Delete Instagram commentbefore
—after
{"destructiveHint":true,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Delete Instagram comment"}before
—after
Get analyticsbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Get analytics"}before
—after
Get Instagram account insightsbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Get Instagram account insights"}before
—after
Get Instagram commentsRead the comments(and replies)people left onanone of the user's own Instagrampost.posts, so the user can review and answer them. Use list_instagram_media first to get a mediaId.
before
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Get Instagram comments"}before
—after
Get Instagram media insightsbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Get Instagram media insights"}before
—after
Get Instagram messagesbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Get Instagram messages"}before
—after
Get Instagram profilebefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"Get Instagram profile"}before
—after
Get postbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Get post"}before
—after
Hide Instagram commentbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false,"title":"Hide Instagram comment"}before
—after
List accountsbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"List accounts"}before
—after
List assetsbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"List assets"}before
—after
List Instagram conversationsbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"List Instagram conversations"}before
—after
List Instagram mediabefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"List Instagram media"}before
—after
List Instagram mentionsbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":true,"title":"List Instagram mentions"}before
—after
List postsbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"List posts"}before
—after
Post attemptsbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Post attempts"}before
—after
Preview campaignbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Preview campaign"}before
—after
Publish draftbefore
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Publish draft"}before
—after
React Instagram messagebefore
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"React Instagram message"}before
—after
Refresh analyticsbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"readOnlyHint":false,"title":"Refresh analytics"}before
—after
Reply Instagram commentbefore
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Reply Instagram comment"}before
—after
Retry postbefore
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Retry post"}before
—after
Run statusbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Run status"}before
—after
Send Instagram messagebefore
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Send Instagram message"}before
—after
Upload assetUploadmediaan(image or video)the user wants toSocialClawpost,hostedsostorage.it can be attached to a post. Provide either sourceUrl (a public http(s) URLtheofserverthedownloadsmedia) or contentBase64.ReturnsThe file is stored in the user's SocialClaw media library and the result includes an asset id and a public URLusableto use as media_link in schedules.
⟨20 unchanged words⟩ string"},"sourceUrl":{"description":"PublicURLhttp(s)toURLdownloadof themediaimagefrom.or video.","type":"string"}},"required": ⟨3 unchanged words⟩
before
—after
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":false,"title":"Upload asset"}before
—after
Validate schedulebefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Validate schedule"}before
—after
Workspace healthbefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Workspace health"}before
—after
Workspace usagebefore
—after
{"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"readOnlyHint":true,"title":"Workspace usage"}Get profile — Identify the connected SocialClaw workspace: its stable id, name, and plan. Use it to confirm which workspace you are acting on.