The TimeToPost MCP Server: Schedule Social Media Posts from Claude, Cursor or Any AI Agent
If you spend your day in Claude, Cursor, or another AI coding agent, switching to a browser tab to schedule a tweet feels increasingly archaic. You already have an assistant that can write the post โ why can't it also ship the post?
Now it can. The TimeToPost MCP server connects any Model Context Protocol client directly to your TimeToPost account. Your agent can check which social accounts are connected, draft and schedule posts to Instagram, TikTok, and X, publish on demand, pull engagement analytics, and even ask for the best time to post based on your historical performance โ all without you leaving the conversation.
This is the definitive guide: what the server does, how to install it in under two minutes, every tool it exposes, and how the security model works.
What is MCP, and why does it matter for social scheduling?
The Model Context Protocol (MCP) is an open standard that lets AI applications talk to external tools and data sources through a common interface. Instead of every AI product building bespoke integrations, a service publishes one MCP server, and every MCP-compatible client โ Claude Desktop, Claude Code, Cursor, and a fast-growing list of others โ can use it immediately.
For social media management, this unlocks a genuinely new workflow:
- Conversational scheduling. "Draft three posts about our launch and schedule them across this week at our best-performing times." One sentence, done.
- Agentic content pipelines. A coding agent that just shipped a feature can write the announcement post and schedule it as part of the same task.
- Analytics on demand. Ask "how did last week's posts perform?" and get a real answer from your real data, not a guess.
The TimeToPost MCP server is deliberately a thin adapter over our existing REST API. Every tool call hits api.timetopost.co with your own token, so all authentication, organization scoping, validation, and publishing logic is exactly the same as the web app. There is no second code path that could drift or leak.
Installation
The 30-second way: hosted server, browser login, no API keys
TimeToPost runs a hosted MCP server at https://api.timetopost.co/mcp. Add it to any remote-capable MCP client and authentication happens in your browser โ email, 6-digit code, approve, done:
claude mcp add --transport http timetopost https://api.timetopost.co/mcp
In Claude Desktop or Claude.ai, it's Settings โ Connectors โ Add custom connector โ paste the URL. In Cursor, add { "url": "https://api.timetopost.co/mcp" } to mcp.json. The access it creates appears in Settings โ API, revocable anytime.
The local way: npm package + API token
Prefer a local stdio server? It's published on npm as timetopost-mcp and runs anywhere Node.js 18+ runs. You need two things:
- An API token. In the TimeToPost dashboard, go to Settings โ API, create a token, and copy it. The raw secret is shown only once, so store it somewhere safe.
- An MCP client. Claude Desktop, Claude Code, Cursor, or anything else that speaks MCP over stdio.
Claude Desktop and Cursor (JSON config)
Add this to your client's MCP configuration file โ claude_desktop_config.json for Claude Desktop, or .cursor/mcp.json for Cursor:
{
"mcpServers": {
"timetopost": {
"command": "npx",
"args": ["-y", "timetopost-mcp"],
"env": {
"TIMETOPOST_API_URL": "https://api.timetopost.co",
"TIMETOPOST_API_TOKEN": "<your token from Settings โ API>"
}
}
}
}
Restart the client and you should see the timetopost server with ten tools available.
Claude Code (one command)
If you live in the terminal, the Claude Code CLI makes this a one-liner:
claude mcp add timetopost \
-e TIMETOPOST_API_URL=https://api.timetopost.co \
-e TIMETOPOST_API_TOKEN=<your token> \
-- npx -y timetopost-mcp
Verifying the connection
Once configured, ask your agent something simple:
"Use the timetopost whoami tool โ which account and organization am I connected as?"
If you get back your email and active organization, you're live. A good follow-up is "list my connected integrations" to confirm which social platforms are linked and healthy.
The complete tool reference
The server exposes ten tools. They map one-to-one onto TimeToPost's REST endpoints, and your agent will pick the right one from the description automatically โ but it helps to know what's in the toolbox.
| Tool | What it does |
| --- | --- |
| whoami | Returns the authenticated user and their active organization. |
| list_integrations | Lists connected social accounts (Instagram, TikTok, X) and their connection status. |
| list_posts | Lists posts for the active org, optionally filtered by status (DRAFT, SCHEDULED, PUBLISHED, FAILED, and more). |
| get_post | Fetches a single post by id, including its platforms, content, and status. |
| schedule_post | Creates a post. Pass a future ISO timestamp to schedule it, or omit it to save a draft. For X threads, pass thread: ["tweet 2", โฆ] (max 24 parts) โ published as replies chained to content. |
| publish_post | Triggers immediate publishing of an existing post. |
| cancel_post | Deletes a post โ the way to cancel something that's scheduled. |
| get_engagement_summary | Returns aggregated engagement metrics for the active org. |
| get_optimal_times | Suggests the best posting times based on your org's historical performance. |
| scheduler_status | Reports the health of the background scheduler: last tick, recent failures. |
Scheduling a post, end to end
Here's what a real interaction looks like. You say:
"Schedule a post for Instagram and X tomorrow at 9am: 'We just shipped MCP support โ your AI agent can now schedule posts for you. Link in bio.'"
Behind the scenes, the agent calls schedule_post with arguments shaped like this:
{
"content": "We just shipped MCP support โ your AI agent can now schedule posts for you. Link in bio.",
"platforms": ["instagram", "twitter"],
"scheduledAt": "2026-06-13T09:00:00-04:00"
}
The backend validates everything โ platforms must actually be connected, the timestamp must be in the future โ and the post lands in your queue exactly as if you'd created it in the dashboard. You can confirm with list_posts filtered to SCHEDULED, reschedule by cancelling and re-creating, or pull it forward with publish_post.
Letting the data pick the time
The combination that makes this more than a remote control is get_optimal_times plus schedule_post. Ask your agent:
"Look up my optimal posting times, then schedule this announcement at the best slot in the next 48 hours."
The agent fetches your historical engagement-based recommendations, picks a slot, and schedules โ a small loop that's tedious for a human and trivial for an agent. (More on why your own data beats generic "best time to post" charts in our companion post.)
How the security model works
Handing an AI agent the keys to your social accounts deserves scrutiny, so here is exactly how access is controlled:
- Your token, your scope. Every tool call carries your bearer token to the backend. The server adds no privileges of its own โ if your token can't do something through the API, the agent can't do it either.
- Organization scoping is enforced server-side. Posts, integrations, and analytics are all scoped to your active organization by the backend, the same code path the web app uses.
- Tokens are revocable. Created a token for an experiment? Revoke it in Settings โ API and the agent's access dies instantly, without touching your password or social platform connections.
- The server holds no credentials for social platforms. Instagram, TikTok, and X tokens never leave the TimeToPost backend. The MCP server only ever sees your TimeToPost API token.
- Locally run, open source. The stdio server runs on your machine via
npx, and the source lives in our public repository โ you can read every line the agent executes.
A practical tip: treat agent tokens like deploy keys. Create a dedicated token per client (one for Claude Desktop, one for Cursor), name them accordingly, and rotate or revoke them independently.
Real workflows this unlocks
The "ship it and say it" loop
You finish a feature in Claude Code. Before closing the session: "Write a short announcement thread about what we just shipped and schedule it for tomorrow morning on X." The same agent that wrote the code writes the copy โ with full context of what actually changed โ and schedules it. No context loss, no tab switching.
The Monday batch
Every Monday: "Here are my five content ideas for the week. Draft them, check my optimal times, and spread them across the week at the best slots." Five posts, scheduled in one conversation, timed by your own engagement history.
The health check
Agents are also good at the boring vigilance work: "Check scheduler_status and list any FAILED posts from the last week." If a platform token expired and a post failed to publish, you find out in seconds rather than discovering an empty feed days later.
The performance review
"Pull my engagement summary and compare it against what we scheduled last month. What should we do differently?" The agent has both the analytics tools and the reasoning ability to actually answer.
What's next: hosted OAuth, no token pasting
The stdio server requires pasting a token once. The next phase is a remote MCP server with browser OAuth โ the same experience as Linear's MCP server, where claude mcp add opens a browser, you sign in with TimeToPost's magic-link auth, and you're done. Same tools, same backend enforcement, zero copy-pasting. It will live at the API domain and reuse the exact auth model described above.
FAQ
Which platforms can the agent post to?
Whatever your TimeToPost account has connected โ currently Instagram, TikTok, and X (Twitter). list_integrations shows the live list and connection health, so the agent always knows what's actually available.
Does this work with clients other than Claude and Cursor?
Yes. Any MCP client that supports stdio servers can run npx -y timetopost-mcp. The protocol is an open standard, and the configuration is the same JSON shape everywhere.
Can the agent post without asking me?
That depends on your client's permission settings, not on the server. Most MCP clients ask for confirmation before tool calls by default, and tools like schedule_post and publish_post are clearly named so approval prompts are meaningful. If you want a human in the loop, keep confirmations on for write tools.
What happens if I give the agent a bad instruction?
The backend validates every request: you can't schedule to a platform you haven't connected, you can't schedule in the past, and posts the agent creates are visible in your dashboard immediately. Worst case, cancel_post (or the dashboard's delete button) removes anything you didn't mean to queue.
Is there a separate price for MCP access?
No. The MCP server is part of your existing TimeToPost plan โ it's the same API your dashboard uses, exposed through a standard protocol.
Where do I get my API token again?
Dashboard โ Settings โ API โ create a token. The secret is shown once at creation. Lost it? Revoke and create a new one โ it takes ten seconds.
The TimeToPost MCP server turns your AI assistant into a social media operator that works with your real accounts, your real queue, and your real data. Install it, connect a token, and the next time inspiration strikes mid-conversation, the post is scheduled before you've switched tabs.
Want to put this into practice? Try TimeToPost free and start scheduling smarter today.