No double posts
If a crash hides the result, the post is marked unconfirmed instead of sent again.
Self-hosted publishing to 5 networks. Agents draft through MCP; publishing, deleting and disconnecting wait for your approval.
Create an MCP connection and paste its config into your agent. By default, it can only read and draft.

Publishing now, deleting and disconnecting wait in Approvals until you say yes. Each approval works once.

Posts go out on time. If Steerpost cannot tell whether one went out, it marks it for you to check.




Create a connection under Developer, then paste its config:
{
"mcpServers": {
"steerpost": {
"type": "http",
"url": "http://localhost:3333/mcp",
"headers": { "Authorization": "Bearer sk_live_..." }
}
}
}
Then ask: “Draft a post about our new release for LinkedIn and Telegram.”
| Tool | Scope | Risk |
|---|---|---|
list_social_accounts, get_social_account | social:read | safe |
list_posts, get_post, get_post_status | posts:read | safe |
get_analytics, get_usage | analytics:read | safe |
create_draft, update_post | posts:write | safe / low |
cancel_scheduled_post | posts:write | medium |
schedule_post | posts:schedule | medium |
publish_post | posts:publish | sensitive, needs the owner's approval |
delete_post | posts:delete | sensitive, needs the owner's approval |
disconnect_account | social:disconnect | critical, needs the owner's approval |
Setup for Claude Desktop, Claude Code and Cursor: MCP docs.
If a crash hides the result, the post is marked unconfirmed instead of sent again.
Network errors and rate limits retry up to 5 times. Other errors fail with the reason.
Network tokens are encrypted with AES-256-GCM and never logged.
The database is the source of truth, so a Redis restart loses no scheduled post.
One command starts the whole stack. Turn on the test network to try it without credentials.
make up # generates .env, then docker compose up
open http://localhost:3000
The demo runs in your browser, with sample posts, accounts and agents.