Plan, write, schedule and review your social posts from a conversation with Claude — on claude.ai, Claude Desktop, mobile, Cowork and Claude Code. Claude does the writing; YesPoster checks every post against each platform’s rules, shows you exactly how it will look, and publishes only what you approve.
Set up
- claude.ai and Claude Desktop: Customize › Connectors › Add custom connector, enter
https://yesposter.com/mcp, then sign in with your YesPoster account. - Claude Code:
claude mcp add --transport http yesposter https://yesposter.com/mcp, then run/mcpto sign in. - Other MCP clients (Cursor and others that speak Streamable HTTP): add the server URL
https://yesposter.com/mcp. - CI and scripts: create a personal token in Settings › Claude & AI tools and send it as
Authorization: Bearer. Tokens are scoped and expire; give CI drafts-only access.
Try asking
- “Turn this blog post into an X thread, a LinkedIn post and an Instagram caption, and show me the previews.”
- “Plan next week: three posts on LinkedIn and X about our launch, in the gaps, at my best times.”
- “How did last month go? What worked, and what should I post more of?”
- “Why did yesterday’s post fail? Retry just the platforms that failed.”
- “Is anything about to stop posting?”
- “Write launch posts from this PR’s changelog and save them as drafts for 9 am tomorrow.”
Slash commands: plan-week, repurpose, launch-announcement, weekly-review, fix-failures, best-time.
Nothing posts without you
Every post is checked first with check_post, which returns a preview of exactly what each platform will receive. Scheduling or publishing needs that preview: change a word, an account or the time and it has to be checked again. Claude asks you before every action that changes something, and in apps that show it, the preview card has an Approve button that sends only the post it shows. Publishing right away needs a separate permission you grant the first time it’s used. Your plan’s limits apply as in YesPoster, and a daily limit stops a runaway assistant.
Tools
Read (no changes)
get_platform_rules— Returns the posting rules YesPoster enforces per social platform: text limit and how it is counted, media count and kinds, video limits, thread splitting, image sizes, and which engagement figures the platform reports.whoami— Returns the signed-in YesPoster user's plan, trial end, connected-account and post allowances (used and remaining), timezone, and the accounts preselected for new posts.list_accounts— Lists the social accounts connected to YesPoster with their ids, platform, handle, health (ok, expiring, expired, needs_setup, failing), what YesPoster can post there, and the fix for any problem.check_post— Checks a post against each chosen account's platform rules without saving or sending it. Returns, per account, whether it is ready, adjusted or blocked and why, the exact text each platform receives (with any thread split), the resolved time, and a preview_id that schedule_post or publish_now requires for this exact post.find_open_slots— Returns the next free times in the user's posting queue and the times their own measured engagement suggests, each suggestion with its reason and sample size, or the reason there is not enough data yet.get_schedule— Returns the user's posts day by day for a range (default the next 7 days, at most 31): each post's time, status, platforms and first line, plus days with nothing scheduled (gaps) and posts to the same account within 30 minutes of each other (clashes).search_posts— Searches the user's published, failed and cancelled posts (not drafts or scheduled ones) by text, platform, account, campaign, status and date range, sorted newest, oldest or by engagement. Returns a page of short rows and a cursor for the next page.get_post— Returns one post: its full text and per-platform versions, media, campaign, and for each platform the delivery status, live link, the failure in plain words with whether a retry can fix it, and the engagement figures ("not reported" where the platform doesn't report one).get_performance— Returns engagement for the last 7, 30 or 90 days against the period before: posts, views, likes, comments, shares and reach where platforms report them (otherwise "not reported" with the reason), freshness, and optionally the top posts, each platform's totals and engagement by weekday and time of day.get_alerts— Returns what needs the user's attention in YesPoster, the same list as the dashboard's Needs attention: failed posts, and accounts whose access has expired or is about to, each with its one fix (retry, reconnect or edit) and a link.list_drafts— Lists the user's saved drafts, newest first: id, last change, first line and target platforms.list_campaigns— Lists the user's campaigns (named groups of posts): id, name and colour.list_media— Lists finished images in the user's YesPoster media library, newest first: id, URL to use in a post, size and file name.get_connect_link— Returns a link to YesPoster's Accounts page that starts connecting a social platform. Signing in to the platform happens in YesPoster, not in the conversation. Also says whether the user's plan has room for another account.
Write (Claude asks first)
create_draft— Saves a draft in YesPoster without publishing or scheduling it. Drafts are not checked against platform rules; the user finishes them in YesPoster or through check_post and schedule_post.update_draft— Changes a saved draft (only the fields given). It stays a draft: nothing is published or scheduled.schedule_post— Schedules a post that check_post has checked. Takes the same content, the account ids check_post returned in send_account_ids, the time, and its preview_id; any difference from what was checked is refused. A repeated idempotency_key returns the first post.publish_now— Publishes a post that check_post checked with when "now" in the last 10 minutes, to the account ids it returned in send_account_ids. Returns as soon as publishing has started; get_post shows each platform's result. A repeated idempotency_key returns the first post.reschedule_post— Moves a scheduled post to a new time (at least 5 minutes ahead). Posts that are publishing, published, failed or cancelled cannot move.cancel_post— Cancels a scheduled post so it does not go out. The post stays in YesPoster's history as cancelled (it can be restored there). It does not remove anything already published on a platform.retry_failed— Retries the platforms a post failed on, when a retry can fix the failure (a platform outage, a timeout). Platforms that already published are left alone. Failures that need an edit or a reconnect are refused with the fix.create_campaign— Creates a campaign: a named, coloured group posts can belong to, for grouping and reporting.assign_campaign— Puts a post in a campaign, or takes it out with campaign_id null. Works on any post; it changes no content.add_media_from_url— Downloads an image (JPEG, PNG, WebP, GIF, up to 25 MB) or video (MP4, MOV, up to 100 MB) from a public https link into YesPoster and returns the URL to use in a post. Private-network and non-https links are refused.create_media_upload— Creates a one-time upload link (valid for 2 hours) for a local image or video, with the curl command that uploads it, and the URL to use in a post once uploaded. For clients that can run shell commands.
Privacy and data handling
- We never store your conversations with Claude. We receive only the tool calls Claude makes and their inputs, such as a post’s text, to do what you asked.
- We log which tool ran, when, how long it took and whether it worked — never post text — and only with your analytics consent.
- Your social accounts’ access tokens never leave our servers and are never sent to Claude.
- Personal tokens are stored only as a one-way hash; we can’t show one again after it’s created.
- Links you give Claude for media are fetched by our servers from the public internet only. See the full Privacy Policy.
Disconnecting
In YesPoster, Settings › Claude & AI tools lists every connected app and personal token. Revoke one and it stops working on its next request. You can also remove the connector in Claude. Questions: support@yesposter.com.