Schedule social media posts from Cursor, VS Code or Windsurf
Add Hookpost by Hookstep's hosted MCP server to Cursor's mcp.json with your API key, and Cursor's agent can list your connected social channels and save posts as drafts, schedule them for a time, or publish them now. The same server works in VS Code (Copilot agent mode) and Windsurf; only the config format changes. It needs a Hookpost Standard or Pro plan, from $19 a month (₹599 in India).
By the Hookpost team ·
Set it up in four steps
- Copy your Hookpost API key. Connect your social accounts in Hookpost first, then open Settings → Developers → Reveal → Copy. There is one key per workspace; Rotate replaces it and the old key stops working at once.
- Add the server to mcp.json. Put the hookpost block in ~/.cursor/mcp.json to use it in every project, or in .cursor/mcp.json to use it in one. The endpoint is https://hookpost.hookstep.in/api/mcp and the key goes in an Authorization: Bearer header.
- Check that Cursor connects. Cursor lists the server and its tools in its MCP settings. If it shows an error, open the Output panel and choose MCP Logs: a 401 there means the header is missing or the key is wrong.
- Ask the agent for drafts first. In Agent mode, ask Cursor to list your Hookpost channels and save posts as drafts. Review them in the Hookpost calendar, then ask for scheduled posts once you trust the output.
Cursor
Paste this into ~/.cursor/mcp.json (every project) or .cursor/mcp.json (this project), with your own key in place of YOUR_API_KEY:
~/.cursor/mcp.json
{
"mcpServers": {
"hookpost": {
"url": "https://hookpost.hookstep.in/api/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}To commit the file without the key, let Cursor read it from your environment. Cursor resolves ${env:NAME} in url and headers:
.cursor/mcp.json (safe to commit)
{
"mcpServers": {
"hookpost": {
"url": "https://hookpost.hookstep.in/api/mcp",
"headers": { "Authorization": "Bearer ${env:HOOKPOST_API_KEY}" }
}
}
}VS Code and Windsurf
VS Code reads .vscode/mcp.json in your workspace. Open Copilot Chat in Agent mode to use the tools. VS Code tries Streamable HTTP first and falls back to SSE.
.vscode/mcp.json
{
"servers": {
"hookpost": {
"type": "http",
"url": "https://hookpost.hookstep.in/api/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}Windsurf uses the same shape as Cursor, except the URL field is serverUrl. Add it from Windsurf's MCP settings, which open its mcp_config.json:
mcp_config.json
{
"mcpServers": {
"hookpost": {
"serverUrl": "https://hookpost.hookstep.in/api/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}| Editor | Config file | Top-level key | URL field | Key sent as |
|---|---|---|---|---|
| Cursor | ~/.cursor/mcp.json or .cursor/mcp.json | mcpServers | url | headers.Authorization |
| VS Code (Copilot agent mode) | .vscode/mcp.json in the workspace | servers, with "type": "http" | url | headers.Authorization |
| Windsurf | Windsurf's mcp_config.json (open it from Windsurf's MCP settings) | mcpServers | serverUrl | headers.Authorization |
All three talk to the same hosted endpoint with the same key. Nothing is installed on your machine.
A first prompt that publishes nothing
Asking for drafts means nothing goes out until you have read it in the Hookpost calendar:
prompt
List my Hookpost channels. Then read CHANGELOG.md and write one LinkedIn post and one X post (under 280 characters) about the newest release. Save both as drafts in Hookpost. Do not schedule or publish anything.
The agent calls integrationList for your channel ids, integrationSchema for each network's rules (280 characters on X, 3,000 on LinkedIn), then integrationSchedulePostTool with type: "draft". If a post breaks a rule, the tool returns the error and the agent can fix it and retry. Drafts carry an MCP badge in the editor, so you can tell which posts an agent wrote.
What the agent can and cannot do
integrationListLists your connected channels, optionally for one customer group.groupListLists your customer groups.integrationSchemaReturns a network's rules, character limit and the settings a post needs.triggerToolCalls a channel helper, for example to fetch your Pinterest boards.integrationSchedulePostToolCreates posts on one or more channels: as a draft, scheduled for a time, or published now.postsListToolLists posts between two dates with their state (queued, draft, published or error).postSettingsToolChanges the network settings of a post that has not gone out yet. Text and date stay as they are.uploadFromUrlToolImports an image or video from a public URL into your media library (images up to 10 MB, video up to 1 GB).
There is no delete tool, and no tool edits the text or date of an existing post, reads analytics or connects a new channel. Do those in the app. The full list, including the AI image and video tools, is in the tool reference.
Questions
- Can Cursor post to social media?
- Yes, through an MCP server. Cursor's agent cannot reach X or LinkedIn on its own; with Hookpost by Hookstep's MCP server added it can list the channels connected in your Hookpost workspace and create draft, scheduled or immediate posts on them. Hookpost does the publishing, so Cursor does not need to stay open.
- Which Hookpost plan do I need?
- The API key, and with it the MCP server, comes with Standard ($19 a month, ₹599 in India: 5 channels, 500 posts a month) and Pro ($29 a month, ₹1,999 in India: 20 channels, 2,000 posts a month, up to 15 team members). Every plan starts with a 3-day trial, and the trial includes the key.
- Can I try it before paying?
- Yes. 3-day trial: in India ₹0 today, then ₹599/month by UPI AutoPay or card; elsewhere $19/month after, by card; cancel at least 24 hours before the first charge.
- How do I keep the API key out of git?
- In Cursor, reference an environment variable instead of the key: "Authorization": "Bearer ${env:HOOKPOST_API_KEY}". Cursor resolves ${env:NAME} in the url and headers fields, so a project .cursor/mcp.json can be committed while each person sets HOOKPOST_API_KEY in their own shell. Otherwise keep the key in ~/.cursor/mcp.json, which lives outside the repo.
- Does Cursor see my social media passwords?
- No. Network tokens stay on Hookpost’s servers, and the tools return channel names and ids, never credentials. The post text, and anything the agent reads from your project to write it, does go through the model Cursor uses.
- Can the agent delete or edit posts?
- There is no delete tool, and no tool edits the text or date of an existing post, reads analytics or connects a new channel. Do those in the app. The agent can change the network settings of a post that has not gone out yet.
- Which networks can it post to?
- Any channel connected in your workspace: Hookpost connects 18 networks, and in the 30 days to 22 October 2026 it published from production to Instagram, Facebook Pages, Threads, X, LinkedIn, YouTube, Pinterest, Discord and Slack. LinkedIn Company Pages, Reddit and Mastodon are not supported; Medium stopped issuing new API tokens, so Hookpost does not connect Medium.
- Does the same setup work in VS Code and Windsurf?
- Yes. It is the same hosted server; VS Code wants a "servers" object with "type": "http", and Windsurf calls the URL field serverUrl. Both configs are on this page.
Related
- Hookpost MCP server
Every client config, the full tool reference and how the server works.
- Schedule posts from Claude Code
One claude mcp add command, a shared .mcp.json and headless runs.
- Schedule posts from Codex CLI
The config.toml block for OpenAI’s terminal agent.
- Social media MCP servers compared
How other schedulers’ MCP servers sign in and what they cost.