# io.github.ndesv21/socialclaw

> Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.

- name: io.github.ndesv21/socialclaw
- version: 0.1.20
- connection class: R1 (autonomous)
- trust: 94/100
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.ndesv21%2Fsocialclaw
- tools: https://api.protogrid.dev/v1/servers/io.github.ndesv21%2Fsocialclaw/tools

**An agent can connect on its own if it already holds `SOCIALCLAW_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "socialclaw": {
      "type": "http",
      "url": "https://getsocialclaw.com/mcp",
      "headers": {
        "Authorization": "Bearer ${SOCIALCLAW_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${SOCIALCLAW_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 85
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% ~updated-76d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 34 of 34 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 4,986 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 35 tool changes in 30 days
- fail `stability.rug_pull`: 3 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: 100 (weight 15)

- pass `deps.known_vulns`: no known advisory in 1 resolved packages
- n/a `deps.mcp_sdk_version`: the official MCP SDK is not in the dependency graph
- pass `deps.resolvable`: socialclaw@0.1.20 resolved: 1 packages

- tools: 34, about 4,986 tokens to load them all
- tool set hash: 5d6cd58dd2c8f7b06dbcd4d5525c4555
- tools last changed: 2026-10-07T12:01:50.571Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.ndesv21/socialclaw.svg)](https://protogrid.dev/servers/io.github.ndesv21/socialclaw)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-07 `get_asset` added
  - 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.
- 2026-10-07 `upload_asset` changed (description, inputSchema) **meaning changed**
  - before: Upload an image or video the user wants to post, so it can be attached to a post. Provide either sourceUrl (a public http(s) URL of the media) or contentBase64. The file is stored in the user's SocialClaw media library and the result includes an asset id and a public URL to use as media_link in schedules.
  - after: Add an image or video to the user's SocialClaw media library so it can be attached to a post. Pass exactly one of: file (a file the user attached in this chat), sourceUrl (a direct public http(s) link to the image or video file, not a web page), or contentBase64 (small files only). Files up to 1 GB are supported through file or sourceUrl. The result is the asset: when status is ready, use its publicUrl as media_link in 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.
- 2026-10-01 `get_profile` added
  - Identify the connected SocialClaw workspace: its stable id, name, and plan. Use it to confirm which workspace you are acting on.
- 2026-10-01 `workspace_health` changed (title, annotations)
- 2026-10-01 `workspace_usage` changed (title, annotations)
- 2026-10-01 `send_instagram_message` changed (title, annotations)
- 2026-10-01 `get_instagram_messages` changed (title, annotations)
- 2026-10-01 `list_instagram_conversations` changed (title, annotations)
- 2026-10-01 `list_instagram_mentions` changed (title, annotations)
- 2026-10-01 `react_instagram_message` changed (title, annotations)

Full history: https://api.protogrid.dev/v1/servers/io.github.ndesv21%2Fsocialclaw/changes

## Dependencies

- npm socialclaw@0.1.20: resolved, 0 dependencies

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://getsocialclaw.com/mcp (streamable-http, auth api_key ${SOCIALCLAW_TOKEN}, reachable true, uptime30d 1)

## Packages

- npm socialclaw@0.1.20 secrets: SOCIALCLAW_API_KEY

## Tools (34)

- `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.
- `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.
- `cancel_post`: Cancel a scheduled post before it publishes.
- `connect_account`: Start connecting one of the user's own social accounts to their SocialClaw workspace. For most providers this returns an authorizeUrl; give it to the user so they sign in with the provider themselves (SocialClaw never sees their password). Telegram and Discord have no sign-in page: Telegram takes the bot token and chat id of a bot the user created and made admin of their channel, and Discord takes a webhook URL the user created for their channel. Only pass values the user gave you for this purpose.
- `delete_instagram_comment`: Permanently delete an Instagram comment on the user's media. Prefer hide_instagram_comment when unsure.
- `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.
- `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.
- `get_instagram_account_insights`: Get an Instagram account's insight trend (a daily time series, e.g. reach) over the last N days.
- `get_instagram_comments`: Read the comments and replies people left on one of the user's own Instagram posts, so the user can review and answer them. Use list_instagram_media first to get a mediaId.
- `get_instagram_media_insights`: Get analytics for one Instagram post (reach, likes, comments, saved, shares, views). Use list_instagram_media for the mediaId.
- `get_instagram_messages`: Read the messages in an Instagram direct-message conversation.
- `get_instagram_profile`: Get an Instagram account's profile stats: followers, follows, media count, bio.
- `get_post`: Get one post including its delivery state and provider identifiers.
- `get_profile`: Identify the connected SocialClaw workspace: its stable id, name, and plan. Use it to confirm which workspace you are acting on.
- `hide_instagram_comment`: Hide or unhide an Instagram comment on the user's media. Set hidden=false to unhide.
- `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).
- `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.
- `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.
- `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.
- `list_instagram_mentions`: List recent @mentions of the workspace's Instagram accounts (captured from Instagram mention webhooks).
- `list_posts`: List posts in the workspace with optional filters.
- `post_attempts`: List publish attempts for a post, including provider errors. Use this to debug failed posts.
- `preview_campaign`: Preview how a campaign schedule document expands into concrete posts and steps without creating anything.
- `publish_draft`: Publish a previously created draft run, optionally at a given ISO-8601 start time.
- `react_instagram_message`: React to a received Instagram direct message (e.g. love).
- `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.
- `reply_instagram_comment`: Reply to an Instagram comment on the user's media.
- `retry_post`: Retry a failed post.
- `run_status`: Get the status summary of a publishing run and its posts.
- `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.
- `upload_asset`: Add an image or video to the user's SocialClaw media library so it can be attached to a post. Pass exactly one of: file (a file the user attached in this chat), sourceUrl (a direct public http(s) link to the image or video file, not a web page), or contentBase64 (small files only). Files up to 1 GB are supported through file or sourceUrl. The result is the asset: when status is ready, use its publicUrl as media_link in 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.
- `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.
- `workspace_health`: Get workspace health, including connection state across providers. Pass provider to check one provider's connections.
- `workspace_usage`: Get workspace usage counters and plan entitlement consumption.
