Automate Social Media with Windsurf Cascade and PostAxis
You can have Windsurf's Cascade agent write and schedule social posts about the code it just shipped by adding the PostAxis MCP server to Windsurf's mcp_config.json. Setup takes about two minutes: one config entry, a refresh, and a browser sign-in the first time Cascade calls PostAxis. This guide is for developers and small product teams who build in public and would rather not leave the editor to announce their work.
The idea is simple. Cascade already has the context: it read the diff, wrote the code, maybe updated the changelog. Writing the announcement is the last step of the same task, so it might as well happen in the same chat.
What you can automate with Windsurf
- Merge announcements. When a feature branch is done, Cascade summarises it as a short X post and a Threads post and schedules them for the next morning.
- Release posts from
CHANGELOG.md. One request turns a release section into a tight X post and a longer LinkedIn post, each written for its network. - A weekly "what's new" digest. Cascade reads the week's commits and posts a plain-language summary to your Telegram channel and LinkedIn.
- Queue checks. Ask Cascade what goes out this week, then have it fix anything that breaks a network's rules before it fails at publish time.
- Drafts for review. Anything you are not sure about can be saved as a draft and finished in the PostAxis calendar.
What you need
- A PostAxis account. Every plan starts with a 7-day free trial and includes MCP access with OAuth sign-in, so no API key is needed for Windsurf.
- At least one social account connected under Accounts in PostAxis (Instagram, TikTok, YouTube, X, LinkedIn, Facebook Pages, Threads or Telegram channels).
- Windsurf with Cascade.
- A project with something worth announcing: a changelog, a merged branch or a tagged release.
How to connect Windsurf to PostAxis (step by step)
- Create your PostAxis account. Sign up at app.postaxis.io. The 7-day trial includes MCP access.
- Connect your social accounts. Open Accounts in PostAxis and connect the networks you want to post to. Cascade can only post to accounts connected here, and it never sees your social media passwords.
- Open the MCP config. In Windsurf, open Cascade, click the MCP (hammer) icon and choose Configure. You can also edit the file directly:
~/.codeium/windsurf/mcp_config.json
- Add the PostAxis entry. Windsurf uses
serverUrlfor remote servers (noturl, which is what some other editors use). IfmcpServersalready exists, add only thepostaxisentry inside it.
{
"mcpServers": {
"postaxis": {
"serverUrl": "https://postaxis.io/api/mcp"
}
}
}
- Refresh. Click Refresh in the MCP panel. PostAxis appears with its 11 tools.
- Sign in. The first time Cascade calls a PostAxis tool, your browser opens the PostAxis sign-in. Log in and approve.
- Check it works. In Cascade's chat, ask:
Which accounts can you post to?
Cascade should call list_accounts and answer with your connected profiles. Each tool call shows up in the chat as it runs, so you can see exactly what it did.
4 workflows you can copy
Announce the feature you just merged
Use this right after Cascade finishes a feature on a branch, while the change is still in its context.
Summarise the feature on this branch as a short X post and a Threads post.
Focus on what the user can now do, not on how we built it. No hashtags.
Schedule both for tomorrow at 10:00 Europe/Berlin.
Cascade reads the branch diff and commit messages, calls list_accounts to find your X and Threads profiles, checks get_platform_rules for the 280 and 500 character limits, then calls create_post with one caption per account and the scheduled time. It replies with something like: "Scheduled for tomorrow 10:00: a 190-character X post and a slightly longer Threads post."
Turn a CHANGELOG section into release posts
The changelog is already the most honest description of a release. Let Cascade translate it for humans.
Read the 2.4.0 section of CHANGELOG.md. Write:
- an X post with the single most useful change and a link to https://example.com/changelog
- a LinkedIn post of 3 short paragraphs: the problem, what changed, who it helps
Schedule both for today at 17:00 America/New_York.
Cascade calls list_accounts, get_platform_rules, then create_post with a separate caption for X and LinkedIn on the same post. One post can target several accounts with per-account captions, so both versions share one schedule and one post ID.
Post a weekly "what's new" digest
Good for Friday afternoons, when nobody remembers what shipped on Monday.
Look at commits on main since last Friday. Group them into New, Improved and Fixed,
skip refactors and dependency bumps, and write a "What's new this week" post.
Publish it to our Telegram channel and LinkedIn now.
Cascade runs git log in the terminal, writes the summary and calls create_post with immediate publishing. Telegram allows up to 4,096 characters for a text-only post, so the full list fits there, while the LinkedIn version stays within 3,000. If you would rather read it first, replace "Publish it now" with "Save it as a draft."
Find and fix posts that won't publish
Run this before a busy week, especially if you edited captions by hand.
List my scheduled posts for this week. Check each one against the rules for its networks
and fix anything that would fail on Instagram or X. Tell me what you changed.
Cascade calls list_posts for the date range, get_post for details, get_platform_rules for limits, then update_post on anything that needs shortening or is missing required media. Instagram posts need at least one image or a video, so if one is missing media, Cascade should tell you rather than invent something. PostAxis does not generate images or video.
Network limits Windsurf works within
These are the rules PostAxis checks for the networks in the workflows above.
| Network | Caption limit | Media rules |
|---|---|---|
| X (Twitter) | 280 characters | Text-only allowed; up to 4 images or one video |
| Threads | 500 characters | Text-only allowed; up to 10 images or one video |
| 3,000 characters | Text-only allowed; up to 9 images or one video | |
| Telegram | 4,096 characters (1,024 with media) | Text-only allowed; up to 10 images or one video |
| 2,200 characters | Media required: 1 to 10 images or one video (Reel); professional accounts only |
Video must be MP4 or MOV, 3 to 300 seconds, in 16:9, 9:16, 4:3, 3:4 or 1:1, and you cannot mix images and video in one post. PostAxis checks every post against these rules before saving it, so a post that is too long or missing media is rejected with a clear error instead of failing quietly at publish time. Cascade reads the error and can fix the post on the next try.
Tips for better posts
- Put your voice in Windsurf's rules. Windsurf supports global and workspace rules that Cascade reads on every request. Add a short section on how you announce things: tone, words you never use, whether you use emoji, your docs URL. Rule locations have moved between versions, so check the Customizations panel in your build.
- Save the routine as a Windsurf workflow. Recent versions let you store a reusable prompt as a workflow and call it with a slash command. A
/announceworkflow that says "read the branch, write X and LinkedIn versions, validate first, schedule for 10:00 Europe/Berlin" saves retyping the same instructions every release. - Validate first when you schedule in bulk. For a launch week, ask Cascade to use
create_posts_bulkwithvalidate_onlyset to true. It checks up to 50 posts against every rule and saves nothing, so you see problems before anything lands in the calendar. - Always say the timezone. "Tomorrow at 9" means nothing to a server. Write "9:00 Europe/Berlin" or "17:00 America/New_York".
- Use drafts while you build trust. Ask for drafts for the first few releases, review them in the PostAxis calendar, and switch to scheduling once the output reads like you.
- Watch the tool limit. Cascade limits how many tools can be enabled at once across all MCP servers. PostAxis adds 11. If you hit the limit, turn off tools you don't use from the MCP panel.
Troubleshooting
PostAxis doesn't show up after editing the config. Check that you used serverUrl, not url, and that the JSON is valid (a missing comma is the usual cause). Then click Refresh in the MCP panel.
Cascade says no accounts are connected. Connect at least one social account under Accounts in PostAxis. If you have several workspaces, tell Cascade which one: "use my Acme workspace".
401 Unauthorized or "sign in again". The sign-in expired or was revoked. Trigger any PostAxis tool from Cascade and the browser sign-in opens again.
A post was rejected before saving. PostAxis checks caption length, media count, and video length and format first. The error says what to change; ask Cascade to fix it and try again.
Posts went out at the wrong time. Say the timezone in the request. Without one, the agent uses the timezone it was told or UTC.
FAQ
Can Windsurf post to social media automatically?
Yes. With the PostAxis MCP server added, Cascade can create, schedule and publish posts to X, LinkedIn, Threads, Telegram, Instagram, TikTok, YouTube Shorts and Facebook Pages. It posts only to accounts you connected in PostAxis.
Is the Windsurf setup the same as Cursor?
Almost. Windsurf uses serverUrl in mcp_config.json, while Cursor uses url in mcp.json. The PostAxis URL and the sign-in flow are the same. See the Cursor guide if you use both.
Does Cascade write a different version for each network?
It can, and it should. Name the networks in one request and Cascade sends one post with a caption per account: a punchy line for X, a short story for LinkedIn, the full changelog for Telegram. PostAxis rejects any version that breaks its network's limits before saving.
Does Windsurf see my social media passwords?
No. You connect social accounts inside PostAxis, and Cascade signs in to PostAxis with OAuth. It never handles your network passwords, and you can revoke it anytime under Settings → API keys → Connected agents.
How much does it cost?
MCP access with OAuth is included in every PostAxis plan, and every plan starts with a 7-day free trial. You need an API key (and the API add-on) only for clients that can't do OAuth, which Windsurf can.
Can PostAxis create images for my release posts?
No. PostAxis does not generate images or video. Cascade can attach media you already have, either from a public URL with upload_media_from_url or from a local file through a one-time link from create_upload_link.
The fastest way to start is to add the config entry above, ask Cascade which accounts it can post to, and have it draft the announcement for whatever you merge next. The Windsurf agent page has the setup in one screen, the PostAxis MCP reference lists every tool, and the complete guide to AI agents for social media compares Windsurf with other agents. If your team also uses Copilot, the VS Code Copilot guide covers the same workflows there. When you're ready, start your free trial.
Ready to simplify your social media?
PostAxis helps builders and creators publish to all platforms from one dashboard with scheduling, cross-posting, and automation.
Join the waitlist →