MCP
Use MCP when an AI assistant should validate, publish, schedule, inspect, edit, or discard posts for a user through SimplePost.
The MCP server is hosted by the Scheduler app and uses Scheduler-connected accounts. Users connect social accounts once in the web app, then authorize the AI client through OAuth.
Endpoint
Hosted Scheduler:
https://schedule.simplepost.dev/mcp
Self-hosted Scheduler:
https://schedule.example.com/mcp
Local Scheduler:
http://localhost:3000/mcp
Replace schedule.example.com with your deployment hostname.
Authentication
The MCP server uses OAuth through Scheduler. The AI client receives a bearer token only after the user approves access.
Scopes:
| Scope | Allows |
|---|---|
accounts:read | Listing connected social accounts. |
posts:read | Inspecting drafts, scheduled, posted, and failed posts. |
posts:validate | Validating and previewing drafts. |
posts:write | Uploading media, creating posts, saving drafts, editing drafts or scheduled posts, and discarding drafts or scheduled posts. |
The MCP server does not expose social platform access tokens.
Tools
| Tool | Purpose |
|---|---|
list_accounts | Return Scheduler-connected accounts and accountId values. |
upload_media | Upload a file from a compatible client and return a public media URL. |
validate_post | Check text and media against platform rules without creating anything. |
preview_post | Resolve accounts, media count, schedule time, and validation without writing anything. |
create_post | Publish immediately, schedule for later, or save a draft. |
inspect_posts | List drafts, scheduled, posted, or failed posts, or inspect one post by ID. |
update_scheduled_post | Edit a draft or future scheduled post after validation when publishing/scheduling. |
discard_scheduled_post | Delete a draft or future scheduled post and its stored media. |
Recommended agent workflow
- Call
list_accounts. - Ask the user to connect accounts in Scheduler if none are available.
- Draft the post and choose target account IDs from
list_accounts. - If media is needed, use a public URL or call
upload_mediawhen the client provides file bytes. - Call
validate_postonly when the user asks to validate or troubleshoot without creating anything. - Call
preview_postonly when the user asks for a preview or when content, accounts, media, or timing are not explicit. - Call
create_postwithpostingMode: "now",postingMode: "schedule", orpostingMode: "draft". - Inspect the returned summary and per-account results.
- Use
inspect_postswhen the user asks what is drafted, scheduled, posted, or failed. - Use
update_scheduled_postordiscard_scheduled_postonly for drafts or future scheduled posts after identifying the exactpostId.
Tool input examples
Validate or preview:
{
"message": "Launch day",
"accountIds": ["account_123", "account_456"],
"media": [
{
"type": "image",
"url": "https://cdn.example.com/image.jpg"
}
],
"postingMode": "schedule",
"scheduledFor": "2030-05-01T14:30:00Z"
}
Create now:
{
"message": "Launch day",
"accountIds": ["account_123"],
"postingMode": "now"
}
Inspect scheduled posts:
{
"status": "scheduled",
"page": 1,
"limit": 10
}
Update a scheduled post:
{
"postId": "post_123",
"message": "Updated launch day copy",
"scheduledFor": "2030-05-01T16:30:00Z"
}
Discard a scheduled post:
{
"postId": "post_123"
}
Client setup
ChatGPT
In ChatGPT, open Apps and Connectors, enable developer mode, then add:
https://schedule.simplepost.dev/mcp
For self-hosted Scheduler, use https://your-scheduler-host/mcp.
Claude Code
claude mcp add simplepost https://schedule.simplepost.dev/mcp
Claude Desktop, Cursor, Windsurf, and other clients
Add a remote MCP server using the same /mcp URL. The client should start the OAuth flow when it first needs authorization.
What MCP cannot do
- Connect, disconnect, or re-authenticate social accounts.
- Expose social platform access tokens.
- Edit or discard already published, failed, pending, or due-for-dispatch posts.
- Read analytics or previous social media posts outside SimplePost records.
Manage social account connections in the Scheduler app.