Post to social media from OpenClaw
OpenClaw, posting to Bluesky, X and LinkedIn.
Save one remote MCP server in OpenClaw and ask from any chat app you already use. You approve, it publishes, you get the link back.
The short answer · Updated Nov 1, 2026
To give OpenClaw social media posting, save SocialsForAI's MCP server under mcp.servers in ~/.openclaw/openclaw.json with url: "https://socialsforai.com/api/mcp", transport: "streamable-http" and an Authorization: Bearer header, or with openclaw mcp set. OpenClaw then offers our posting tools to its agent runs. If your runtime doesn't load MCP tools, the agent can call the REST API at https://socialsforai.com/v1 instead.
What OpenClaw is
OpenClaw's docs describe it as "an open-source AI assistant that runs on your own hardware and meets you in every chat app you already use," with a gateway process bridging channels such as Telegram, Slack, Discord, Signal and WhatsApp to the agent.
For social posting that means you can ask from your phone in a chat thread, "post this to Bluesky," and get the post URL back in the same thread. OpenClaw saves third-party MCP servers in its config and, per its docs, projects them into runtimes that expose configured MCP tools.
openclaw.json entry
OpenClaw's configuration docs put MCP server definitions under mcp.servers in ~/.openclaw/openclaw.json. Remote entries take url, transport (streamable-http or sse) and headers, and the docs' example builds the header from an environment variable the same way. Use streamable-http; that's what our server speaks.
Or save it from the CLI. The docs list openclaw mcp set <name> <json>, and openclaw mcp probe <name> connects to the server and lists its tools without running an agent turn. If the probe lists eight tools, the setup works.
// ~/.openclaw/openclaw.json
{
mcp: {
servers: {
socials: {
url: "https://socialsforai.com/api/mcp",
transport: "streamable-http",
headers: {
Authorization: "Bearer ${SOCIALS_API_KEY}",
},
},
},
},
}
# or from the CLI
openclaw mcp set socials '{"url":"https://socialsforai.com/api/mcp","transport":"streamable-http","headers":{"Authorization":"Bearer sk_..."}}'
openclaw mcp probe socialsREST fallback
If the runtime you use in OpenClaw doesn't load MCP tools, any agent that can make HTTP requests can use the same features over REST. Give it the key and point it at our docs in plain text at /llms.txt. The endpoints mirror the tools: GET /v1/accounts, POST /v1/connect-links, POST /v1/posts (with dry_run and Idempotency-Key), GET /v1/posts/:id. Full reference in the docs.
curl https://socialsforai.com/v1/posts \
-H "Authorization: Bearer $SOCIALS_API_KEY" \
-H "Idempotency-Key: bsky-2026-11-01-1" \
-d '{"accounts":["acc_..."],"text":"...","dry_run":true}'Which tools OpenClaw sees
openclaw mcp probe socials is the quickest check of what the agent will get: it should list list_platforms, list_accounts, create_connect_link, create_post, get_post, list_posts, cancel_post and get_usage. OpenClaw's toolFilter can trim that list per server. The inputs each tool takes are documented once on the hub, in every tool and its inputs.
Three prompts to start with
Send these from any channel OpenClaw is connected to.
- "Post this to Bluesky: <text>. Dry run first and send me the preview." Calls
list_accountswithplatform: "bluesky", thencreate_postwithdry_run: true. After you reply yes, the same call withoutdry_runand with anidempotency_key, and it sends you the post URL from the target. - "Connect my Bluesky account." Calls
create_connect_linkwithplatforms: ["bluesky"]and sends you the URL. Open it on your phone and use an app password. - "Every Friday, summarize what I shipped and draft a post, but don't publish until I approve." Each run calls
create_postwithdry_run: trueand waits for your reply. Passscheduled_atif you want it held for a set time.
A post from a chat thread, start to finish
Chat changes the shape of a session. You might send the request from Telegram, wait an hour, and approve from Slack, so the agent should carry the dry-run body forward unchanged and send it with the same idempotency_key it picked for the draft. If the gateway restarts and the agent sends the publish twice, the second call returns the first post with nothing new published.
What comes back to the thread is the receipt for each account: published with a bsky.app URL, or failed with an error and its fix. A connect link sent to your phone stays valid for 7 days by default, so you can approve the account later from the same thread. For an app that connects accounts for other people, external_ref on the link tags every account it creates, and list_accounts can filter by it.
Approval in OpenClaw chats
Chat makes approval natural: tell OpenClaw to always reply with the dry-run preview and wait for "yes" in the thread. OpenClaw's toolFilter can also hide tools per server; exclude: ["create_post"] gives you a read-only setup for status checks. Our own checks, including the daily caps and the duplicate block, apply whichever channel the request came from; see keeping a human in the loop.
Fixing OpenClaw setup problems
These are the failures that come from OpenClaw's side. When a tool runs and returns an error, the body has a code and a fix; the hub's error code list covers each one.
openclaw mcp probe socialsfails: check thattransportisstreamable-http, notsse, and thatSOCIALS_API_KEYis set for the gateway process if you used the variable form.- The tools don't show up in a run even though the probe works: the runtime may not expose configured MCP tools. Use the REST fallback above.
- Status checks work but the agent says it can't post: a
toolFilteron the server entry excludescreate_post. Remove it fromexcludeif you want posting from that setup.
Set up OpenClaw in four steps
- 01
Get a key for the gateway
Create a workspace at /signup and make the sk_ key available to the OpenClaw gateway, in the config or as SOCIALS_API_KEY.
- 02
Save the MCP server
Add a socials entry under mcp.servers in ~/.openclaw/openclaw.json with url https://socialsforai.com/api/mcp, transport streamable-http and an Authorization: Bearer header, or save it with openclaw mcp set.
- 03
Probe it
Run openclaw mcp probe socials. It connects and lists the tools. A 401 means the header is wrong.
- 04
Connect from your phone
In a chat thread, ask OpenClaw to connect your Bluesky account. Open the link it sends, enter an app password, and reply when you're done.
Questions
What developers ask
Can OpenClaw post to social media?
Yes, through an MCP server or an HTTP API. Save our server under mcp.servers and OpenClaw's agent can post to X, Bluesky, LinkedIn, Mastodon and Telegram today.
Does OpenClaw support remote MCP servers with headers?
Its configuration docs show remote entries with url, transport streamable-http and a headers object with an Authorization bearer token.
Can I post from Telegram or WhatsApp through OpenClaw?
Those are OpenClaw channels. Ask from the channel; OpenClaw's agent calls our tools and replies with the result.
Where does OpenClaw keep my API key?
In ~/.openclaw/openclaw.json, or in an environment variable referenced from it. Both stay on your own machine.
Is there a REST option if MCP isn't available?
Yes. Every MCP tool has a REST endpoint under /v1. The plain-text docs at /llms.txt are written for agents to read.
Get an API key and send your first post in five minutes.