Your agent writes the post. You sign it. SMMist puts it out on time.
One API and an MCP server for X and Instagram. Agents draft and schedule; nothing goes live without the approval you require; every step lands in an append-only audit trail you can verify.
Start free, no card→$claude mcp add smmist --transport http https://api.smmist.com/mcp
Scheduling tools were built for a person with a calendar. SMMist was built for the thing now doing the drafting: a coding agent with a tool call. It validates before it queues, refuses duplicates by idempotency key, and holds anything that needs a human.
Bring your own X developer keys and keep your own rate limits. Post Reels to Instagram from the same call. When something fails at 9:30 on a Monday, the queue tells you which step, which attempt, and whether it is safe to retry.
From the proof desk
The agent marks the copy. You pass it for press.
Every revision is kept. Reviewers see exactly what the agent changed and why, in its own words, before they sign. The signature covers a sha256 of the final text, media and targets, so a later edit cannot ride on an old approval.
Blue
the agent did this
Vermilion
a person must act
Proof · post 9b1d6c4e · rev 2 → rev 3@ClaudePass_HQ X · @wisparm_keyboard IG Reel
[deleted: Big news! We’re thrilled to announce that VoiceMsg is finally here.] Hold space. Talk. Let go. [inserted: VoiceMsg is live:][deleted: Your][inserted: your] voice becomes a message in any app, in 40+ languages. wisparm.com/voicemsg[deleted: #voice #keyboard #ai]
X 126 / 280 · link counted as 23 · was 197
Corrections
1Opener cut.68 characters that said nothing before the product name.
2“Your” → “VoiceMsg is live: your”.The news goes in the first line, where the feed shows it.
3Hashtags moved to the Instagram override.They stay on IG and leave the X copy clean.
✓ Passed for press · Samson B., ownerFri Oct 9 16:04 PT · sha256 4e1f…a09c
Edit one character after the imprint and it is void: the worker refuses to publish content whose hash does not match the approval.
§ 1How it works
Built for the tool call, not the calendar.
Add the MCP server to Claude Code, or call the REST API from anything. Same semantics either way.
i.
Validate before you queue
validate_post is a dry run against each platform’s real rules (length, link weight, media codecs, aspect ratio) and returns every problem at once, with a code an agent can act on.
ii.
Create with an idempotency key
Retries return the same post, never a second one. Per-platform overrides let one call carry the X copy and an Instagram Reel caption.
iii.
Hold for approval
Keys without the publish scope can only draft. Approval binds to the content hash; edit one character and it must be approved again.
iv.
Publish, or explain why not
Each target moves through an explicit state machine. The attempt is committed before the irreversible call, and an ambiguous timeout is reconciled with the platform before anything is re-sent.
smmist.create_post
# Claude Code, mid-session
> Schedule the VoiceMsg launch for Monday 9:30 PT on X and as an IG Reel.
tool smmist.validate_post // dry run, nothing storedtool smmist.create_post
{
"text": "Hold space. Talk. Let go. VoiceMsg is live…",
"accounts": ["@ClaudePass_HQ", "@wisparm_keyboard"],
"media_ids": ["5f0c8a1e-…"], // 24s, 9:16, H.264"overrides": {
"instagram": { "options": { "ig": { "type": "REELS" } } }
},
"publish_at": "2026-10-12T09:30:00-07:00",
"idempotency_key": "voicemsg-launch-2026-10-12",
"agent": { "name": "claude-code", "model": "claude-opus-5-5" }
}
✓ validated 2 targets · 0 errors · 1 warning (IG cover frame not set) ✓ created 9b1d6c4e-3f0a-4c51 · status pending_approval → approval requested from samson@ · sha256 4e1f…a09c
§ 2Platforms
Two networks today, listed plainly.
We add a platform when it publishes reliably end to end, not when there is a logo to put on a page. Two platforms done properly before five done badly.
X formerly TwitterLive
Formats
Text, images, GIF, video
Limits
280 chars · URL = 23 · 4 images or 1 video · video ≤ 2:20 · ≤ 512 MB
Keys
Bring your own developer keys. Your app, your rate limits, your bill from X.
Instagram Business & CreatorLive
Formats
Reels, feed, carousels, stories
Limits
2,200 chars · media required · 10 per carousel · video 0:03–15:00 · ≤ 300 MB
Keys
Our Meta app. Connect with Instagram login.
Bluesky300 graphemesQ4 2026
Threads500 charsQ1 2027
LinkedIn3,000 chars2027
Supported and planned platforms
Network
Status
Formats
Limits we check
Credentials
Xformerly Twitter
Live
Text, images, GIF, video
280 chars · URL = 23 · 4 images or 1 video · video ≤ 2:20 · ≤ 512 MB
Bring your own developer keys. Your app, your rate limits, your bill from X.
InstagramBusiness & Creator
Live
Reels, feed, carousels, stories
2,200 chars · media required · 10 per carousel · video 0:03–15:00 · ≤ 300 MB
Our Meta app. Connect with Instagram login.
BlueskyAT Protocol
Q4 2026
Text, images, video
300 graphemes
App password.
Threads
Q1 2027
Text, images, video
500 chars
Our Meta app, after its own App Review.
LinkedIn
2027
Text, documents, video
3,000 chars
Our app; company pages need LinkedIn's approval.
Timings are targets, not promises. Subscribe to the changelog for dates.Limits read from GET /v1/platforms
§ 3The record
Who wrote it, which model, who said yes.
Every event is appended to a per-organization hash chain. The database refuses updates and deletes.
“When an agent posts on your behalf, ‘the AI did it’ is not an answer anyone will accept.”
The reason this product exists
§Agent, model, key and session recorded on every draft
§Approval bound to a sha256 of the exact content
§Recompute the chain yourself: GET /v1/audit/verify
Metered per published post-target, once, however many retries it took. Cancel from the dashboard; your audit export stays downloadable for 90 days. † In development; dates on the changelog.USD · prices exclude tax
Let the agent draft. Keep the pen.
Free workspace, a test key in your terminal, and your first post validated in under five minutes.