Generate, schedule, and manage social posts from any MCP client. Cursor, Claude Desktop, Cline, Windsurf and more, without context-switching to the dashboard. Built for founders and creators who already live in AI coding assistants.
By Tayyab, Founder
Your assistant reads these descriptions to decide when to call Content Drifter.
generate_postWrite a platform-native post from a topic, in your brand voice.
POST /api/mcp/v1/generatewrite
Ask: "Write a LinkedIn post about why we moved off per-seat pricing, in a direct tone." Returns: the post text, suggested hashtags, and an image prompt you can hand straight to Image Studio. Nothing is saved or scheduled by this call.
schedule_postPut content on the calendar for a future time.
POST /api/mcp/v1/schedulewrite
Ask: "Schedule that for Tuesday at 9am." Lands on your calendar awaiting review. It does NOT go out on its own -- see Publishing and approval below.
list_upcoming_postsRead back what is already scheduled.
GET /api/mcp/v1/upcoming-postsread
Ask: "What am I posting this week?" Returns each item with its platform, status and scheduled time in your account timezone, so "Tuesday 9am" means Tuesday 9am to you.
list_platform_connectionsCheck which accounts are connected before you plan around them.
GET /api/mcp/v1/platformsread
Ask: "Which of my accounts are connected?" Returns each platform with its connection health, so the assistant can warn you BEFORE scheduling to an account that needs reconnecting.
get_brand_kitRead your voice, colours and fonts so generations stay on-brand.
GET /api/mcp/v1/brand-kitread
Usually called on your behalf, not asked for directly. A good assistant reads this first so the post it writes sounds like you rather than like a language model.
publish_nowSend an approved post immediately.
POST /api/mcp/v1/publishwrite
Ask: "Publish the LinkedIn one now." Refuses anything that has not been reviewed. That is the guard, not an inconvenience: it is what stops an assistant posting to your audience without you seeing it.
cd_live_YOUR_KEY_HERE with your key..cursor/mcp.json (project) or Cursor Settings → MCP
{
"mcpServers": {
"contentdrifter": {
"command": "npx",
"args": ["-y", "@contentdrifter/mcp"],
"env": {
"CONTENTDRIFTER_API_KEY": "cd_live_YOUR_KEY_HERE"
}
}
}
}claude_desktop_config.json → mcpServers
{
"mcpServers": {
"contentdrifter": {
"command": "npx",
"args": ["-y", "@contentdrifter/mcp"],
"env": {
"CONTENTDRIFTER_API_KEY": "cd_live_YOUR_KEY_HERE"
}
}
}
}Cline MCP settings (VS Code)
{
"mcpServers": {
"contentdrifter": {
"command": "npx",
"args": ["-y", "@contentdrifter/mcp"],
"env": {
"CONTENTDRIFTER_API_KEY": "cd_live_YOUR_KEY_HERE"
}
}
}
}Optional: set CONTENTDRIFTER_API_BASE to http://localhost:3001 when testing against pnpm dev:test.
Every request carries your key as a Bearer token. Your MCP client sends it for you once it is in the config; the raw form is here for anyone calling the endpoints directly.
curl https://www.contentdrifter.com/api/mcp/v1/upcoming-posts -H "Authorization: Bearer cd_live_YOUR_KEY_HERE"
Read tools
list_upcoming_posts, list_platform_connections, get_brand_kit
100 requests per minute, per key. Free of generation quota, so checking costs nothing.
Write tools
generate_post, schedule_post, publish_now
30 requests per minute, per key. Generation also counts against your plan exactly as the dashboard does, plus an hourly ceiling on model spend.
Rate limited
HTTP 429
Carries a Retry-After header. A well-behaved client waits instead of retrying at once.
Plan caps
Same as the dashboard
MCP is another door into the same account, not a second allowance.
API keys
5 active per account
Revoke one to create another. One key per client so a single machine can be revoked.
401Unauthorized
The key is missing, malformed or revoked. Check it is sent as a Bearer token.
400Validation failed
A parameter is missing or the wrong shape. The response names the field.
400That time has already passed
scheduledFor must be in the future, read in YOUR account timezone.
403Plan limit reached
Out of quota for the day or month. The same cap the dashboard enforces.
429Rate limited
Too many calls. Honour Retry-After.
The part worth understanding before wiring this into anything automated.
Scheduling is not approving. Anything created through MCP lands on your calendar awaiting Final Review, and the publish pipeline skips unreviewed items. An assistant cannot post to your audience on its own, even if you ask it to. That is deliberate, and it is why handing a model an API key here is a reasonable thing to do.
publish_now is the one exception, and it refuses anything that has not passed review. So the order is always: generate, schedule, you review, then publish.
Turns the weekly content chore into one conversation, and you still see everything before it goes out.
You are already in the editor when the feature lands, which is when the detail is freshest.
Read tools are quota-free, so checking first costs nothing and stops you scheduling into a dead account.
Ask in plain language. Your assistant picks the tool; you never name it.
“Draft a LinkedIn post about our new pricing and schedule it for Tuesday 9am.”
Generates in your brand voice, then books the slot on your calendar. Nothing publishes until you approve it.
“What am I scheduled to post this week?”
Reads your calendar back, grouped by day, in your account timezone.
“Turn this blog URL into a thread for X.”
Fetches the page, repurposes it, and fits the copy to X automatically.
The assistant says it has no Content Drifter tools
The client only reads MCP config at startup. Fully quit and reopen it, not just the window. In Cursor, check Settings then MCP for a green dot next to contentdrifter.
Every call returns 401
The key is wrong, revoked, or still the placeholder. Keys are shown once at creation, so if you did not copy it, generate a new one and delete the old.
Scheduling fails with "that time has already passed"
Times are read in your account timezone, set under Settings then Preferences. Ask for a future slot, or say the date explicitly.
A post is on the calendar but never went out
Scheduled is not approved. Anything created through MCP waits for your review, by design, so nothing publishes to your audience without you seeing it.
Still stuck? Tell us what you tried and include the client you are using.
It is a Model Context Protocol (MCP) server that lets AI coding assistants call Content Drifter on your behalf, generate platform-native posts, schedule them, list upcoming content, and read your Brand Kit without leaving Cursor or Claude Desktop.
Any MCP-compatible client works: Cursor, Claude Desktop, Cline, VS Code with an MCP extension, and other stdio MCP hosts. You add one JSON config block and restart the client.
Generate an API key at /dashboard/settings/api-keys, set CONTENTDRIFTER_API_KEY in your MCP client env, and restart. Keys are hashed server-side; the raw secret is shown once at creation.
No. publish_now requires Final Review to be completed in the dashboard first. The tool description tells your assistant to confirm with you before publishing.
No. You add the Content Drifter MCP server to your assistant’s configuration once, authenticate, and then talk to it in plain language. Writing code is optional and only relevant if you are building your own automation on top.