MCP server for Claude, ChatGPT and Claude Code
Give your agent the address https://calmposts.com/mcp. It can list your channels, draft posts and threads, schedule them and check on them. It cannot reply, follow or send DMs.
Server address https://calmposts.com/mcp
You approve, in Telegram
Posts your agent creates can wait for you. The Telegram bot shows each one; approve or reject it with a tap, and nothing goes out without your yes.
Claude Code
Create an API key in API & MCP in the app, then add the server:
claude mcp add --transport http calmposts https://calmposts.com/mcp \
--header "Authorization: Bearer cp_live_…"claude.ai and Claude Desktop
No key needed: the connector signs in with OAuth.
- Open Settings → Connectors and add a custom connector.
- Paste https://calmposts.com/mcp as its address.
- Sign in to calmposts and approve the access on the consent page.
ChatGPT
Connectors need developer mode turned on.
- Open Settings → Connectors → Create.
- Paste https://calmposts.com/mcp as the server address.
- Sign in to calmposts and approve the access.
A local process (Claude Desktop, Cursor)
The calmposts-mcp binary runs the same tools over stdio and calls the REST API with your key. It downloads images on your machine, under the same rules as the hosted server.
{"mcpServers": {"calmposts": {
"command": "/path/to/calmposts-mcp",
"env": {"CALMPOSTS_API_KEY": "cp_live_…", "CALMPOSTS_URL": "https://calmposts.com"}
}}}How connectors sign in
A connector finds our OAuth server from the 401 answer and /.well-known/oauth-protected-resource, registers itself, sends you to the consent page and exchanges the code with PKCE.
Access tokens last an hour; refresh tokens last 30 days and are replaced each time they are used. Only the workspace's owner can approve, and only on a plan with agents. Disconnecting an app in API & MCP ends its access at once.
Tools
| Tool | Does |
|---|---|
list_accounts | your channels and each network's rules |
get_limits | plan usage, the workspace's time zone, network limits |
create_post | a post or a thread for the chosen accounts, wording per account, images by URL; when: draft, queue, at or now |
list_posts | posts by status, account and time range |
get_post | one post with its channels, status and version |
update_post | edit or reschedule; what is left out stays |
delete_post | cancel and remove |
get_next_slot | where when=queue would put a post |
retry_post | send the failed channels again |
Posts created through MCP get source “mcp”. There are no tools that reply, follow or send DMs: X forbids automating them.
Images by URL
- https on the default port only
- public addresses only, checked after DNS and on every redirect
- 5 MB at most
- JPEG, PNG, WebP or GIF, recognised from the file's bytes
- 10 seconds at most