Skip to main content

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:

ScopeAllows
accounts:readListing connected social accounts.
posts:readInspecting drafts, scheduled, posted, and failed posts.
posts:validateValidating and previewing drafts.
posts:writeUploading 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

ToolPurpose
list_accountsReturn Scheduler-connected accounts and accountId values.
upload_mediaUpload a file from a compatible client and return a public media URL.
validate_postCheck text and media against platform rules without creating anything.
preview_postResolve accounts, media count, schedule time, and validation without writing anything.
create_postPublish immediately, schedule for later, or save a draft.
inspect_postsList drafts, scheduled, posted, or failed posts, or inspect one post by ID.
update_scheduled_postEdit a draft or future scheduled post after validation when publishing/scheduling.
discard_scheduled_postDelete a draft or future scheduled post and its stored media.
  1. Call list_accounts.
  2. Ask the user to connect accounts in Scheduler if none are available.
  3. Draft the post and choose target account IDs from list_accounts.
  4. If media is needed, use a public URL or call upload_media when the client provides file bytes.
  5. Call validate_post only when the user asks to validate or troubleshoot without creating anything.
  6. Call preview_post only when the user asks for a preview or when content, accounts, media, or timing are not explicit.
  7. Call create_post with postingMode: "now", postingMode: "schedule", or postingMode: "draft".
  8. Inspect the returned summary and per-account results.
  9. Use inspect_posts when the user asks what is drafted, scheduled, posted, or failed.
  10. Use update_scheduled_post or discard_scheduled_post only for drafts or future scheduled posts after identifying the exact postId.

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.