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://app.simplepost.social/mcp

Self-hosted Scheduler:

https://schedule.example.com/mcp

Local Scheduler:

http://localhost:3000/mcp

Replace schedule.example.com with your deployment hostname.

Client setup

Hosted MCP is included on every paid plan and the active free trial. First connect your social accounts, then authorize your assistant using the same SimplePost account. No SimplePost API key is needed for MCP OAuth.

ChatGPT

  1. Open the SimplePost plugin in ChatGPT.
  2. Select + to install it, sign in to SimplePost when prompted, and approve access.
  3. Start a new chat with SimplePost enabled. Ask it to list your SimplePost accounts and save a draft.

Use the hosted listing as the normal installation path. Manual custom-app setup is an alternative for clients or workspaces that allow it; your assistant subscription and workspace settings determine availability. Troubleshooting.

Claude

  1. Open SimplePost in the Claude directory.
  2. Choose Connect, sign in to SimplePost, and approve access.
  3. Enable the connector in your conversation and ask it to save a draft.

For a self-hosted instance, add your own remote URL through Claude's custom connector settings when available.

Claude Code

claude mcp add --transport http simplepost https://app.simplepost.social/mcp

Run /mcp in Claude Code and complete the browser authorization. Replace the origin for a self-hosted deployment.

OpenClaw

openclaw mcp add simplepost --url https://app.simplepost.social/mcp --transport streamable-http --auth oauth --no-probe
openclaw mcp login simplepost

Complete OAuth in the browser. If the client requests a returned code, finish with openclaw mcp login simplepost --code <code>. Treat the code as a credential and do not share it.

Other clients

For Cursor, Windsurf, or another compatible client, add this remote Streamable HTTP MCP URL and complete OAuth:

https://app.simplepost.social/mcp

For self-hosting, use your deployment's /mcp URL. Manual ChatGPT custom-app setup requires a plan/workspace allowing developer mode and write actions: open Settings → Apps → Advanced settings, enable developer mode where available, then create a custom app with your server URL. Prefer the hosted listing when using hosted SimplePost.

Authentication

The MCP server uses OAuth through Scheduler. The AI client receives a bearer token only after the user approves access.

Access tokens are stored only as SHA-256 hashes, expire after 90 days, and can be revoked through the authorization server's advertised /api/oauth/revoke endpoint. Revoked tokens stop working immediately.

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.
get_tiktok_creator_infoInspect allowed TikTok privacy, interaction settings, and posting limits.
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.
show_post_previewRender a visual preview for unsaved content or a saved post.
get_scheduleReturn day/week/month calendar data and available slots.
show_scheduleRender the interactive calendar.
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 exposes a file parameter.
  5. Call validate_post only when the user asks to validate or troubleshoot without creating anything.
  6. Use preview_post for validation-oriented details and show_post_preview for a visual preview. Resolve missing content, accounts, media, or timing before writing.
  7. Call create_post with postingMode: "now", postingMode: "schedule", or postingMode: "draft".
  8. Inspect the returned summary and per-account results. After saving or changing a draft or scheduled post, call show_post_preview with the returned ID. A preview alone never performs the write.
  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"
}

Media

upload_media accepts a required file parameter supplied by a compatible chat client, including download_url and file_id. It does not accept base64 file bytes. The result provides the public url, filename, size, and type to pass to a post's media array. Preserve returned metadata for validation. See upload limits for the MCP file-size cap and lower web-app limits; individual platforms can impose further restrictions.

If your client exposes neither a file parameter nor a public URL, upload through the web app or supply a public URL. Local paths and browser blob: URLs do not work with the remote server.

Calendar and visual previews

preview_post and get_schedule return data. show_post_preview and show_schedule render interactive MCP Apps UI where supported, with text and structured-data fallbacks for other clients.

For get_schedule or show_schedule:

{ "view": "week", "date": "2030-05-01", "timeZone": "Europe/Berlin" }

For a saved post preview:

{ "postId": "post_123" }

Calendar tools include open posting slots and scheduled, pending, published, failed, and past activity. Scheduling guide.

Threads, variants, quotes, and reposts

Use thread for ordered text-only follow-ups; remote MCP media belongs on the root. X, Bluesky, Threads, and Telegram support native chains; other destinations receive only the root with a warning. The interface allows up to 24 follow-ups, with a lower twenty-total-segment limit during the trial.

Use accountOverrides for per-account content and accountOptions for provider settings. Pass quotePostId from an existing SimplePost record to quote it; never invent an ID. New posts use the user's automatic repost default. Check returned repost status and due time. Publishing guide.

For TikTok, get_tiktok_creator_info reports allowed privacy and interaction settings. Remote MCP direct posts default to public if privacy is omitted; explicitly pass the requested audience in accountOptions[accountId].privacyLevel. Photo direct posts default to recommended music. TikTok options and inbox uploads.

Remote MCP and in-browser WebMCP are separate interfaces. In-browser WebMCP does not submit non-draft TikTok posts because the web app requires its manual consent flow.

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.