Prompt
I just finished the booking reminders feature for our salon software. Write a Threads post for salon owners, first person as the founder, about why we built it: no-shows cost them money. Under 400 characters. How to do it
- Mint a Threads agent key In https://app.socialhandoff.com, open Connections, connect your Threads account, then create an agent key scoped to Threads with draft permission only. Copy the key when it is shown; only its hash is stored.
- Edit mcp_config.json Open Windsurf's MCP settings and add a server with serverUrl https://app.socialhandoff.com/mcp and an Authorization header holding the Threads key. Or use the stdio form with npx -y socialhandoff-mcp.
- Refresh the servers Refresh MCP servers in the Cascade panel so the new tools load.
- Let Cascade draft Ask Cascade to summarize the branch you are on as a Threads post. It calls draft_post; you approve or send it back with edits from the inbox.
Example draft
Every salon owner I talk to says the same thing: no-shows hurt more than slow weeks. So we built booking reminders. Your clients get a text the day before with a one-tap confirm or reschedule, and you see who confirmed at a glance. It is on for every account today, no setup.
Gotchas
- Threads fetches images and video from your instance at signed, expiring URLs, so you do not need a separate public media host. The API itself must be reachable over public HTTPS; an instance that only runs on localhost cannot publish media to Threads.
- Keep each Threads post within 500 characters, and remember that Threads counts emoji by their UTF-8 bytes, so a few emoji use more of the limit than they appear to. The per-network length guardrail flags longer drafts before they reach the inbox.
- A draft too long for one post can go out as a reply-chain thread, with each part published as a reply to the one before. Every part has its own 500-character limit, and a carousel of 2 to 20 images or videos can lead the chain.
- Windsurf loads MCP servers when Cascade starts. After changing mcp_config.json, refresh the servers or the Threads tools will not be offered.
- Character limit: 500 characters per post. Emoji count as their UTF-8 bytes, so an emoji can use up to 4 characters of the limit.
- Links: Up to 5 links per post. Threads generates a preview for the first one.
- Carousels: 2 to 20 images or videos in one carousel post.
- Image files: JPEG or PNG, up to 8 MB. Threads fetches each file from a URL at publish time.
Frequently asked questions
Stdio or HTTP for Windsurf?
Both are supported. HTTP needs no local Node process. Stdio with npx -y socialhandoff-mcp is handy when your instance runs on the same machine.
Can Windsurf attach a screenshot to a Threads post?
Yes. Upload the image and SocialHandoff serves it to Threads at a signed, expiring URL, with alt text if you add it. The instance must be reachable over public HTTPS so Threads can fetch the file.
What happens if a Threads publish fails?
The post is marked failed with the error, a post.failed webhook fires if you registered one, and you can fix and retry from the inbox.