Review the queue
Read everything proposed, scheduled and published on the account, then act on it: approve a proposal (proposed becomes scheduled), dismiss it, publish a queued post now, edit a still-scheduled post's time, text, media or target account, cancel it, or ask for a rework from feedback.
A batch resolves in one call. Every draft the agent team makes lands here first, so this is where a human, or the agent acting for one, says yes.
Ask in plain words
- "what is waiting for my approval"
- "approve the two LinkedIn posts you would pick"
- "move Thursday's post to Friday 6pm"
- "publish the queued post now"
- "cancel the scheduled TikTok"
From an agent host (MCP)
Server: https://shapelessai.com/mcp (add it to your host).
posts_list: The post queue: proposed drafts, scheduled posts, published history. Needs the read scope.posts_get: One post's live state. Needs the read scope.posts_approve: PUBLISHES CONTENT: approving moves proposals to the schedule, and they will go out. Needs the publish scope.posts_dismiss: Cancel posts: proposed, scheduled, failed or handed-off. Nothing already publishing or published is touched. Pass the user's reason when they gave one; it teaches the agent their taste. Needs the write scope.posts_publish: PUBLISHES CONTENT NOW: pushes a queued post to the platform immediately. Needs the publish scope.
From code (REST)
Bearer API key with the scope each call names (auth, OpenAPI).
GET /api/posts(read scope): The queue: proposed, scheduled, published. ?status= and ?limit= narrow it.GET /api/posts/{id}(read scope): One post's live state.PATCH /api/posts/{id}(write scope): Edit a still-scheduled post: time, text, media, settings, first comment, or the target account (same platform).DELETE /api/posts/{id}(write scope): Cancel a scheduled or proposed post.POST /api/posts/{id}/approve(publish scope): Approve one proposal: proposed -> scheduled.POST /api/posts/{id}/publish(publish scope): Publish a queued post now.POST /api/posts/{id}/mark-posted(publish scope): Record that you posted it yourself.POST /api/posts/{id}/revise(write scope): Rework a draft from feedback.POST /api/posts/resolve(publish scope): Resolve posts: {ids, verb: approve|dismiss}. Approve takes proposed posts; dismiss cancels proposed, scheduled, failed or handed-off ones. Dismiss costs write.
From a terminal (CLI)
shapeless posts listshapeless posts showshapeless posts approveshapeless posts dismissshapeless posts publishshapeless posts mark-posted
Example
Refusals
| Status | Meaning |
|---|---|
| 409 | Already publishing, or the new account is another platform. |
| 402 | Free plan day full (FreeDailyCap). |
| 409 | Needs a connected account: {needsConnection, connect: {platform, url, expiresAt}} - hand connect.url to the human. |
