Changelog
Changelog
Notable changes to the public API and MCP server. Breaking changes will always be announced here first.
2026-08-07
- Breaking (MCP
schedule_post): timing is now an explicit, requiredwhen. It takes"draft","now","next_slot", or an ISO-8601 timestamp. Previously an omittedscheduled_atmeant "publish immediately and irreversibly" — an absent parameter deciding to broadcast, on the surface driven by a model. Omitting bothwhenandscheduled_atnow returnsno_timing_specifiedand publishes nothing.scheduled_atstill works for one more release and is equivalent to passing that timestamp inwhen(ignored ifwhenis also given; the responsewarningssay so).when="draft"creates a draft — no publish job is queued, and drafts do not count against the monthly post limit.when="next_slot"with no posting schedule returnsno_queue_slotsrather than falling through to publish-now. RESTPOST /api/postsis unchanged: it already required an explicitpublish_nowand defaulted to draft. - New MCP tool
get_queue_slots— read-only; returns the next open slots in your posting schedule as{iso, label}. Slots are computed, not reserved, so use it to show a human real options; usewhen="next_slot"when you want the server to pick at write time. - MCP
list_scheduledrenamed tolist_posts, with a newstatusfilter (scheduleddefault, plusdraft,published,failed,all) so agent-created drafts are findable.list_scheduledstays registered as a deprecated alias for one release and keeps its old scheduled-only behaviour. - LinkedIn post visibility —
platform_optionsforlinkedinnow acceptsvisibility:PUBLIC(default) orCONNECTIONS. Discoverable viaget_capabilities/GET /api/capabilities. - Error envelopes rewritten for agents —
plan_limit_reached,no_connected_accounts, andaccount_inactiveno longer end at "upgrade your plan" or "go to Settings", which a caller with no browser cannot do. Each now leads with an action the caller can take and carries structured recovery data:alternatives[](healthy accounts withhealth),resets_at,drafts_count_against_limit, andconnect_url/reconnect_url/upgrade_urlfor the human handoff. - Six new MCP tools bring the agent surface level with the dashboard —
publish_now(send a draft, scheduled or failed post immediately),retry_post(resend only the channels that failed, leaving published ones untouched),duplicate_post(copy content, channels and media into a new draft),delete_post(remove a post in any state),restore_post(undo a delete or cancel), andget_analytics(reach, impressions, likes/comments/shares, engagement rate, per-channel and per-platform breakdowns, daily timeline and top posts over a date window). - Removing a post is now reversible from an agent.
cancel_postanddelete_postsoft-delete, andrestore_postbrings the post back.get_postnow also finds deleted posts, returningdeleted_atand anoutcomeofdeleted— previously a cancelled post vanished from every read surface. A post whose scheduled time has passed is restored as a draft rather than re-armed, so restoring never publishes anything by itself. - New error codes:
post_not_publishable,post_not_retryable,post_not_deleted. - A platform with no native options now returns
{}, not a missing key — on bothget_capabilitiesandGET /api/capabilities. A missing key read as "unknown platform". - REST gets the same verbs:
POST /api/posts/{id}/cancel,/publish-now,/retry,/duplicate,/restore, plusGET /api/analytics. Each mirrors the MCP tool of the same name; a test assertsGET /api/analyticsandget_analyticsreturn identical payloads. DELETE /api/posts/{id}on a scheduled post is no longer a dead end. It told you to "cancel scheduled post before deleting" while no cancel endpoint existed, so a scheduled post could not be removed over REST at all. Cancel now exists. Breaking: that refusal changes from422 {message}to409 {error: {code: 'post_not_cancelable', ...}}, matching the error envelope every other endpoint uses.- State-conflict errors now return 409, not 422 —
post_not_cancelable,post_not_publishable,post_not_retryable,post_not_deleted. The request body is fine; the post is in a state that does not allow the action.
2026-07-17
- Per-account
publishingstatus — while a post publishes, each targeted account'spivot.statustransitionspending → publishing → published | failed.publishingis transient (a channel is uploading/processing). The post's ownstatusstaysscheduledthroughout publishing; poll until no account ispendingorpublishing, then treat apublishedpost that still has afailedaccount as a partial publish.partialis derived, not a storedstatus. - New MCP tool
get_post— retrieve a single post by id with its post-levelstatus, a derivedoutcome(draft/scheduled/publishing/published/partial/failed), andper_account[]delivery records (status,error_message,platform_url,published_at). Use it to poll a just-published post;list_schedulednow also includes per-accountstatus, andget_statsreports apublishingcount.
2026-06-07
- Developer documentation launched at
schedulenchill.com/docs— REST API, MCP server, and reference.
2026-06
- MCP server available at
/mcpwith seven tools, three resources, and two prompts. - REST API: Posts, Media, and API Keys resources with bearer-token authentication.
- Platforms: X, LinkedIn (profiles + Pages), Facebook, Instagram, Pinterest, YouTube, TikTok.
Roadmap
- Outbound webhooks for publish/fail events.
- Per-key rate limits with
X-RateLimit-*headers. - Additional platforms: Threads, Bluesky, Google Business Profile.
- OpenAPI specification and official SDKs.