1social
Post to Instagram, TikTok, LinkedIn, X (Twitter), Facebook, Threads and Bluesky from a single message.
What it can do
- List Accounts: Lists the social accounts the user has connected to 1Social, what each network will accept (caption length, whether media is required, whether it can thread), the current plan, and the
- Preview Post: Checks a draft post against each selected network WITHOUT publishing it, and reports what would go wrong: per-segment character counts against each limit, whether a network requires an i
- Publish Post: Publishes a post to the user's connected social accounts, or schedules it for a future time by setting scheduledAt (null publishes immediately; the limit is 30 days ahead). Run preview_p
What data it sees
Do you need an account
No: the server works without sign-in
Post to Instagram, TikTok, LinkedIn, X (Twitter), Facebook, Threads and Bluesky from a single message. 1Social fits each caption to the network's limit, warns when a network needs an image, and schedules posts up to 30 days ahead.
After publishing it reports each network separately — what landed, what failed and why — and can retry one network without touching the rest. Edit or cancel anything still scheduled.
How to connect
How to connect 1social to Claude
The server address to paste into Claude settings:
https://onesocial--vibeseo.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect 1social to ChatGPT
The server address to paste into ChatGPT settings:
https://onesocial--vibeseo.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect 1social to Cursor
The server address to paste into Cursor settings:
https://onesocial--vibeseo.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (10)
Raw names from tools/list. Only developers need these.
| list_accounts | Lists the social accounts the user has connected to 1Social, what each network will accept (caption length, whether media is required, whether it can thread), the current plan, and the remaining monthly posting quota. Call this before composing anything: channel ids from here are required by every other tool. Connecting a new account needs a browser and cannot be done from a chat. |
| preview_post | Checks a draft post against each selected network WITHOUT publishing it, and reports what would go wrong: per-segment character counts against each limit, whether a network requires an image, whether a multi-segment post will publish as a native thread or be joined into one post, and what the post would cost against the remaining quota. Pass any attached image or video in `media` (or `mediaUrls` if you only have a public link) so the check accounts for it. Always call this before publish_post — it is free and it is the only preview that exists. |
| publish_post | Publishes a post to the user's connected social accounts, or schedules it for a future time by setting scheduledAt (null publishes immediately; the limit is 30 days ahead). Run preview_post first and resolve any issues — this tool refuses a post that exceeds a network's limits. To attach an image or video the user shared, pass it in `media` (or `mediaUrls` if you only have a public link); Instagram and TikTok reject a post that has none. Pass a stable idempotencyKey so a repeated call cannot publish the same thing twice. The result is a per-network receipt: some networks can succeed while others fail, and that outcome must be reported to the user network by network. |
| list_posts | Lists the user's posts with the outcome on each network: delivered, failed with a readable reason, cancelled, or `unknown` when 1Social genuinely cannot tell. Includes stored engagement metrics where the network reports any. Pass postId to fetch one post, status to filter, or limit to shorten the list. Delivery ids needed by retry_delivery and confirm_delivery come from here. |
| update_post | Changes the content and scheduled time of a post that has not been sent yet. Only works while the post is still editable — a post that is published, in progress, or cancelled cannot be edited. The networks have no edit endpoint, so this withdraws the scheduled post and replaces it; if some networks accept the replacement and others do not, the result names the ones that kept the old version. |
| cancel_post | Cancels a scheduled post so it will not be published, and releases the quota it had reserved. The post stays in the list with a cancelled status and its receipt intact. Use this rather than delete_post when the post has not gone out yet. |
| delete_post | Deletes a post from 1Social and attempts to remove the published post from each network. Removal works on X, LinkedIn, Bluesky and Facebook; Instagram, TikTok and Threads expose no working delete API, so a post that went to them STAYS LIVE and only the user can take it down. On a thread, only the first post is removed and the remainder stay live as orphans. The result reports what actually came down, per network — report that to the user accurately rather than confirming a clean delete. Confirm with the user before calling this. |
| retry_delivery | Retries one failed delivery to a single network, leaving the deliveries that already succeeded untouched. Retrying spends quota again. It is refused for a permanent failure such as a revoked credential or a policy rejection, because it would only fail again. For a delivery in the `unknown` state, `force` is required and retrying MAY publish a second copy — ask the user before doing that. |
| upload_media | Gets an upload target for a file you hold locally, for clients that cannot attach files to a tool call. Use it ONLY when you have the file itself and no public link — if the user attached something, pass that in publish_post's `media` instead, and if you already have a public https link use `mediaUrls`. The flow is: 1. Call this tool with the file's name, MIME type and size. 2. PUT the raw bytes to the uploadUrl it returns, sending uploadHeaders exactly as given. 3. Pass the returned publicUrl in `mediaUrls` when you call preview_post or publish_post. The upload target is short-lived, so do step 2 straight away. Serving the file from a local web server instead does not work: only public https links are accepted. |
| confirm_delivery | Records the answer to a delivery 1Social could not determine: whether the post is actually live on that network. The USER must check the network and say — never infer this, and never call it on their behalf without an explicit answer. Confirming that a post is live commits the quota it used; confirming that it is not marks the delivery failed so it can be retried. |